ASP.NET使用者控制元件操作ASPX頁面(在ASPX頁面捕捉使用者控制元件的事件)
阿新 • • 發佈:2019-02-18
一、簡單例項
先來個簡單點的,首先新建一個 “web使用者控制元件”WebUserControl1.ascx,
在頁面上新增一個按鈕,並響應Click事件:
<asp:Button ID="Button1" runat="server" Text="在頁面級的TextBox輸入一個隨機數" onclick="Button1_Click" />
然後編寫後臺程式碼:
//定義一個不含資料的事件處理方法 public event EventHandler Click; protected void Button1_Click(object sender, EventArgs e) { Click(this, EventArgs.Empty); }
好了,使用者控制元件我們就算完成了,現在新建一個WebForm1.aspx頁面,在頁面上新增一個Textbox,並把使用者控制元件新增到該頁面:
<%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> <uc1:WebUserControl1 ID="WebUserControl11" runat="server" /> </div> </form> </body> </html>
然後我們在後臺對使用者控制元件的事件新增一個函式響應,程式碼如下:
protected void Page_Load(object sender, EventArgs e) { WebUserControl11.Click += new EventHandler(WebUserControl11_Click); } void WebUserControl11_Click(object sender, EventArgs e) { TextBox1.Text = new Random().Next(1000, 9999).ToString(); }
到這,我們的示例就完成了,我們在aspx可以捕捉到使用者控制元件的事件,做我們想做的事情了。
二、帶有事件資料的示例
當然,有時候我們不僅想要在aspx頁面捕捉到事件,還希望能獲取到一些引數,這時候EventArgs就需要出場了
首先,新建一個web使用者控制元件WebUserControl2.ascx
在頁面上新增兩個按鈕,分別響應Click事件,如下:
<asp:Button ID="Button1" runat="server" Text="修改頁面標題為編輯"
onclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="修改頁面標題為新增"
onclick="Button2_Click" />
C#程式碼,首先新增一個類ChangePageTitleEventArgs,用來傳遞事件資料,程式碼如下:
public class ChangePageTitleEventArgs : EventArgs
{
public ChangePageTitleEventArgs(string title)
{
this.Title = title;
}
public string Title
{
get;
private set;
}
}
然後我們來編寫使用者控制元件的後臺程式碼:
public event EventHandler<ChangePageTitleEventArgs> ChangePageTitle;
protected void Button1_Click(object sender, EventArgs e)
{
ChangePageTitle(this,new ChangePageTitleEventArgs("編輯"));
}
protected void Button2_Click(object sender, EventArgs e)
{
ChangePageTitle(this, new ChangePageTitleEventArgs("新增"));
}
使用者控制元件的程式碼就OK了,然後我們新建一個WebForm2.aspx頁面,將使用者控制元件新增到該頁面
<%@ Register src="WebUserControl2.ascx" tagname="WebUserControl2" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:WebUserControl2 ID="WebUserControl21" runat="server" />
</form>
</body>
</html>
編寫後臺程式碼,對使用者控制元件的時間新增處理函式:
protected void Page_Load(object sender, EventArgs e)
{
WebUserControl21.ChangePageTitle += new EventHandler<ChangePageTitleEventArgs>(WebUserControl21_ChangePageTitle);
}
void WebUserControl21_ChangePageTitle(object sender, ChangePageTitleEventArgs e)
{
this.Page.Title = e.Title;
}
好了,很簡單的我們就完成了程式碼,執行測試一下,效果如下: