ASP.NET用戶控件操作ASPX頁面(在ASPX頁面捕捉用戶控件的事件)

一、簡單實例

先來個簡單點的,首先新建一個 “web用戶控件”WebUserControl1.ascx,

在頁面上添加一個按鈕,並響應Click事件:

<asp:Button ID="Button1" runat="server" Text="在頁面級的TextBox輸入一個隨機數" οnclick="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="修改頁面標題爲編輯" 
    οnclick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="修改頁面標題爲新增" 
    οnclick="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;
        }


好了,很簡單的我們就完成了代碼,運行測試一下,效果如下:

版權所有,轉載請標明出處。http://blog.csdn.net/bdstjk

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章