風之力

导航

将事件加入自订控制项中

有的时候,我们在自订控制项中添加BUTTON,比如新增、修改、删除、查询、打印等,或者向导中的上一步、下一步、完成。而我们在程序中所有用到这些按钮的地方,都透过添加这个自订控制项来完成

以下假如我们自订一个控制项页面,里面添加一个BUTTON,TEXT设置为“添加”,现在要在引用这个控制项的页面中透过点击这个按钮,来触发引用页面的事件

一、控制项页面的代码:
namespace WebTest
{
    
using System;
    
using System.Data;
    
using System.Drawing;
    
using System.Web;
    
using System.Web.UI.WebControls;
    
using System.Web.UI.HtmlControls;

    
/// <summary>
    
///        WebUserControl1 的摘要描述。
    
/// </summary>
    public class WebUserControl1 : System.Web.UI.UserControl
    {
        
protected System.Web.UI.WebControls.Button Btn_Add;
        
protected System.Web.UI.WebControls.Button Btn_Modify;

        
/// <summary>
        
/// 定義委托
        
/// </summary>
        public delegate void AddClick(object sender,EventArgs e);
        
public delegate void ModifyClick(object sender,EventArgs e);

        
/// <summary>
        
/// 定義事件
        
/// </summary>
        public event AddClick OnAddClick;                        
        
public event ModifyClick OnModifyClick;

        
private void Page_Load(object sender, System.EventArgs e)
        {
            
// 在這裡放置使用者程式碼以初始化網頁
        }

        
#region Web Form 設計工具產生的程式碼
        
override protected void OnInit(EventArgs e)
        {
            
//
            
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }
        
        
/// <summary>
        
///        此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
        
///        這個方法的內容。
        
/// </summary>
        private void InitializeComponent()
        {
            
this.Btn_Add.Click += new System.EventHandler(this.Btn_Add_Click);
            
this.Btn_Modify.Click += new System.EventHandler(this.Btn_Modify_Click);
            
this.Load += new System.EventHandler(this.Page_Load);

        }
        
#endregion

        
private void Btn_Add_Click(object sender, System.EventArgs e)
        {
            
this.OnAddClick(sender,e);     //觸發委托事件
        }

        
private void Btn_Modify_Click(object sender, System.EventArgs e)
        {
            
this.OnModifyClick(sender,e);  //觸發委托事件
        }      
    }
}

二、引用页面的代码
    1。首先,要把自订控制项页面拖到引用页面中,ID设为 WebUserControl
    ASPX代码中如下:
    <uc1:WebUserControl1 id="WebUserControl" runat="server"></uc1:WebUserControl1>

    CS中代码如下: 
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebTest
{
    
/// <summary>
    
/// UserControlTest 的摘要描述。
    
/// </summary>
    public class UserControlTest : System.Web.UI.Page
    {


        
private void Page_Load(object sender, System.EventArgs e)
        {
            WebUserControl1 wc 
= this.FindControl("WebUserControl"as WebUserControl1;
            wc.OnAddClick 
+= new WebTest.WebUserControl1.AddClick(this.AddButtonClick);
            wc.OnModifyClick 
+= new WebTest.WebUserControl1.ModifyClick(this.ModifyButtonClick);
        }

        
private void AddButtonClick(object sender,EventArgs e)
        {
            Response.Write(
"Add Clicked!");
        }
        
private void ModifyButtonClick(object sender,EventArgs e)
        {
            Response.Write(
"Modify Clicked!");
        }
        
#region Web Form 設計工具產生的程式碼
        
override protected void OnInit(EventArgs e)
        {
            
//
            
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }
        
        
/// <summary>
        
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
        
/// 這個方法的內容。
        
/// </summary>
        private void InitializeComponent()
        {    
            
this.Load += new System.EventHandler(this.Page_Load);

        }
        
#endregion
    }
}



以上,就可以在引用页面中点击控制项中的BUTTON来触发引用页面中的方法了

posted on 2008-03-25 17:11  ZY.Zhou  阅读(521)  评论(2编辑  收藏  举报