程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> ASP.NET中最簡單的自定義控件

ASP.NET中最簡單的自定義控件

編輯:C#入門知識

ASP.NET用戶控件一般適用於產生相對靜態的內容,所以沒有builtin的事件支持。本文討論用戶控件返回事件的方法。          假定用戶控件(UserControl.ascx)中包含按鈕控件AButton,希望實現按AButton按鈕時,包含該用戶控件的頁面可以接收到事件。為此,小雞射手在用戶控件和頁面的代碼中分別作了處理。
          UserControl.ascx.cs中的處理:         1. 定義public的事件委托,如ClickEventHandler;         2. 在UserControl類中聲明事件,如Click;         3. 在UserControl類中定義引發事件的方法,如OnClick()方法;         4. 在UserControl類的相關方法中調用引發事件的方法,如在Button_Click()中調用OnClick()。
          核心代碼示意如下:         public delegate void ClickEventHandler(object sender, EventArgs e);         public class MyUserControl : System.Web.UI.UserControl         {            protected System.Web.UI.WebControls.Button AButton;            public event ClickEventHandler Click;            protected void OnClick(EventArgs e)             {                if (Click!=null) Click(this, e);             }            private void AButton_Click(object sender, System.EventArgs e)            {                this.OnClick(e);            }         }
        包含UserControl的頁面cs文件中的處理:      1. InitializeComponent()中增加事件處理程序,采用FindControl方法找到UserControl;      2. 定義事件處理方法,在該方法中處理UserControl的事件,如UserControl_Clicked()。      核心代碼示意如下:      private void InitializeComponent()      {                this.Load += new System.EventHandler(this.Page_Load);            MyUserControl uc = this.FindControl("myUserControlID") as MyUserControl;            uc.Click += new ClickEventHandler(this.UserControl_Clicked);      }      private void UserControl_Clicked(object sender, System.EventArgs e)      {            // UserControl_Clicked event hanlder      }
       總結一下,其實就是將事件機制利用手工編程的方法加進去:加入一般控件IDE自動生成的代碼。順便說一下,C#的事件機制實現了Obeserver pattern,除了UI還可以用於業務層,能有效地降低對象間的耦合度,像UserControl那樣,根本無需知道包含它的頁面對象是誰!    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved