用户控件触发事件

原创 2007年09月23日 13:10:00
 

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
 


Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数

Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数 在日常的工作中,我们时常会遇到这样的需求:点击一用户控件中的服务器按 钮,变更页面上该用户控件以外某处的数据显示。这样就...

自定义android用户控件,使用回调函数实现自定义事件

在android软件设计中会用到好多的控件,但系统自带的控件有好多不能够达到需要实现的功能或是控件不够美观。那怎么办呢? android应为我们提供了好多的控件,我们可以继承某一控件,然后对它进行重...
  • psuaije
  • psuaije
  • 2013年03月12日 11:12
  • 35494

ASP.ENT创建带事件的用户控件

下面说下怎么创建带事件的用户控件:   标准的WEB空间有事件,来进行交互,同样用户控件也有。   要创建一个带事件的用户控件很简单,只需要三步:   1.定义个公开的(public) 的事件委...

有效利用ASP.NET用户控件的事件委托

当你在开发ASP.NET网站,对用户控件一定并不陌生。当多个页面都使用相同或相似的设计时,使用用户控件可以提高开发效率! 但往往你会因为用户控件有少许不同的要求而感觉到烦恼。在多个页面都会要求用到用...

asp.net给用户控件添加事件和属性

意图是这样的: 管理页面中,总会有一些新增啊,删除啊,修改啊之类的按钮,为了方便,我想做个用户控件; 这个用户控件,里面有三个按钮,新增、修改、删除;这个用户控件要在多个页面上出现,当然,修改与删...
  • A_post
  • A_post
  • 2012年10月24日 13:40
  • 587

自定义android用户控件,使用回调函数实现自定义事件

在android软件设计中会用到好多的控件,但系统自带的控件有好多不能够达到需要实现的功能或是控件不够美观。那怎么办呢? android应为我们提供了好多的控件,我们可以继承某一控件,然...

转Asp.net 用户控件添加自定义事件

转Asp.net 用户控件添加自定义事件 对于用户控件的使用有这样的特点。就是,当我们要求一个用户控件要实现特定的功能的时候,他可以在整个网站里面的页面上任意拖拽。但是,他的功能相对固定,也就是说在...

delegate委托事件与用户控件的应用

执行条件: 创建用户控件,前台写好jquery和html,后台定义一个Register类(用来存储用户输入的信息),然后定义一个名为InsertDelegate的委托(public delegate...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用户控件触发事件
举报原因:
原因补充:

(最多只允许输入30个字)