用户控件触发事件

原创 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
 


用户控件触发事件

假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件。为此,在用户控件和页面的代码中分别作了处理。 User...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年07月31日 14:33
  • 903

C# 中用户控件中添加事件和使用

事件 用户控件 c#中用户控件 用户控件添加事件 自定义事件的使用 此处以TreeView用户控件为例:基本思路:1. 在SunSoftTree类中声明事件,如SelectedNodeChanged;...
  • forhiti
  • forhiti
  • 2007年06月26日 17:41
  • 2204

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

Asp.net 用户控件添加自定义事件asp.net
  • Sunqlive
  • Sunqlive
  • 2016年09月07日 11:17
  • 938

Vb.net中暴露用户控件中子控件事件的实现(VB2005)

在vb.net中编写的用户控件中,有时需要把用户控件内子控件的某个事件暴露给用户使用,使用户能够自已定义子控件的事件,在C#中网络上有现成的代码可用,但是转为VB.net时却会有一些小问题,下面是VB...
  • wjbych
  • wjbych
  • 2009年01月08日 10:31
  • 998

怎样在DropDownList控件中响应OnSelectedIndexChanged事件

出错情况:1).aspx文件中:  runat="server" OnSelectedIndexChanged="SelectFirstSort_Change">2).cs文件中:  protecte...
  • liuliu20036
  • liuliu20036
  • 2009年03月31日 22:19
  • 8920

ASP.NET中页面及用户控件的事件执行顺序

在WebForm1页面上直接放置用户控件WebUserControl1时的事件顺序: WebUserControl1_Init WebForm1_Init Page_Load WebUserC...
  • soarheaven
  • soarheaven
  • 2012年02月13日 15:10
  • 929

VB中自定义事件和事件处理

一个包含事件的类:ClsWithEvents ClsWithEvents类中,有两个属性Width和Height,这两个属性改变时会分别触发对应的Changed事件。 在 Public Event...
  • wesley219
  • wesley219
  • 2012年06月15日 14:51
  • 1133

WPF自定义控件的事件

写一个WPF的自定义控件,在点击控件中的一个按钮时,需要触发一个事件,使用这个自定义控件的客户,可以订阅这个事件,进行处理。 实现的代码段如下: 1.注册一个路由事件   public stat...
  • theoldsod2000
  • theoldsod2000
  • 2013年10月17日 15:34
  • 3553

c#给用户控件添加事件处理程序

1.首先在usercontrol后台添加如下代码: public partial class MyControl:UserControl{      //添加事件代理      public even...
  • rztyfx
  • rztyfx
  • 2011年06月24日 12:29
  • 6057

ASP.NET用户控件事件的定义和实践--C#里的委托和事件实现Observer

一、委托的简介 1、委托的声明:                delegate HandlerName ([parameters]) 例如:               public deleg...
  • stonezhuzisgu
  • stonezhuzisgu
  • 2007年09月18日 10:21
  • 1392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用户控件触发事件
举报原因:
原因补充:

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