在应用用户控件中,经常会遇到一个控件控制另一个控件的情况,同时还需要将参数传送给去。现举一个简单的实例,控件中的按钮按下后,在主页面中输入一个行参数。
控件中的代码:
public partial class WebUserControlWithEvent : System.Web.UI.UserControl
{
public delegate void SendMessage(string strMsg);
public event SendMessage sendTextEvent;
protected void btnSubmit_Click(object sender, EventArgs e)
{
//事件的触发点:
sendTextEvent(txtMsg.Text);
}
protected void Page_Load(object sender, EventArgs e)
{
//.....
}
}
主页面中引入控件后的代码:
public partial class EventSample : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WebUserControlWithEvent1.sendTextEvent += new WebUserControlWithEvent.SendMessage(WebUserControlWithEvent1_sendTextEvent);
}
void WebUserControlWithEvent1_sendTextEvent(string strMsg)
{
ShowMessage(strMsg);
}
private void ShowMessage(string strMessage)
{
//.......
}
}
__________________________________________________________________________________
用VB写的代码如下(VB中的实例为二个参数):
控件中:
Partial Class WebControlWithEvent Inherits System.Web.UI.UserControl
Public Delegate Sub SendMessage(ByVal msgId As String, ByVal msgTxt As String) Public Event sendTextEvent As SendMessage
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click RaiseEvent sendTextEvent("SA001", txtMsg.Text) End Sub End Class
主页面中引入控件后的代码:
Partial Class SampleEvent Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load AddHandler WebControlWithEvent1.sendTextEvent, AddressOf obj_SendMessage End Sub
Sub obj_SendMessage(ByVal msgId As String, ByVal msgTxt As String) MessageBarControl1.ShowMessage("SA", msgId, New String() {msgTxt}, MessageBarControl.MessageType.InformMsg) End Sub End Class