关闭

用户控件触发事件

284人阅读 评论(0) 收藏 举报
 

HTML Tags and JavaScript tutorial



用户控件触发事件





假定用户控件
(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
那样,根本无需知道包含它的页面对象是谁!
**另一种方法
引用页面
:<@Register TagPrefix=”uc1” TagName=”editSearch” src=”…/search/editSearch.ascx”>
后台页面
:protected Search.editSearch EditSearch1;
添加事件
:this.EditSearch1.onClick = new EnentHander(DgFoot_onClick);
定义事件
:private void DgFoot_onClick(object sender,EventAegs e)
        
{
                  
//
执行事件的方法
}
用户控件页面
:
定义事件
:public event ErentHander onClick;
建立触发事件
:if(onClick!=null)
                  
onClick(sender,e);
 
链接地址:
http://dygstudio.cnblogs.com/archive/2006/07/13/449976.html
 


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:150430次
    • 积分:4028
    • 等级:
    • 排名:第7682名
    • 原创:242篇
    • 转载:0篇
    • 译文:0篇
    • 评论:16条
    文章存档
    最新评论