ASP.NET用户控件返回事件的方法

翻译|其它|编辑:郝浩|2007-08-13 11:24:58.000|阅读 1024 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

     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 那样,根本无需知道包含它的页面对象是谁!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP