在《在用戶控件中添加屬性》這一篇文章中我們演示瞭如何在用戶控件中添加屬性,接下來我們演示如何在用戶控件中添加事件。
在《在用戶控件中添加屬性》這一篇文章中我們定義了一個用戶登錄的用戶控件UserLogin.ascx 文件,裏面包含了一個LinkButton服務器按鈕控件,當用戶單擊該按鈕時服務器端會自動生成一個回發來激發Page.Load事件。除了服務器自動產生回發來激發Page.Load事件外,我們可以給LinkButton添加一個它自己的事件,添加事件其實也很簡單,通過在<script></script>塊中聲明事件,然後把該事件添加到用戶控件中。
我們現在通過以下的例子來說明如何在UserLogin.ascx用戶控件中添加事件。
UserLogin.ascx
<html>
<title>用戶登錄</title>
<body>
<table>
<tr>
<td>用戶名:</td>
<td><asp:TextBox ID=”txt1” runat=”server”></td>
</tr>
<tr>
<td>密 碼:</td>
<td><asp:TextBox ID=”txt2” TextMode=”password” runat=”server”></td>
</tr>
<hr>
<tr>
<td></td>
<td><asp:LinkButton Text=”登陸” OnClick=”MyOnClick” runat=”server”></td>
</tr>
</table>
</body>
</html>
<script language=”C#” runat=”server”>
public string UserName{
get{return txt1.Text;}
set{txt1.Text=value;}
}
public string PassWord{
get{return txt2.Text;}
set{txt2.Text=value;}
}
public event Eventhandler Login; //添加事件句柄
void MyOnClick(Object Sender,EventArgs e){
if(Login != null)
Login(this,new EventArgs()); //激活Login事件
}
</script>
在ASPX頁面中使用自定義事件:
<%@Register TagPrefix=”wen” TagName=”UserEvent” src=” UserLogin.ascx”%>
<html>
<body>
<form runat=server>
<wen:UserEvent ID=”MyLogin” OnLogin=”OnLoginPress” runat=”server”>
</form>
<asp:Label ID=”Lab1” runat=”server”/><br>
<asp:Label ID=”Lab2” runat=”server”/><br>
</body>
</html>
<script Language=”C#” runat=”server”>
void OnLoginPress(Object Render, EventArgs e){
Lab1.Text=MyLogin.UserName;
Lab2.Text=MyLogin.PassWord;
}
</script>