Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数
来源:互联网 发布:打开淘宝跳转到天猫 编辑:程序博客网 时间:2024/05/01 20:45
Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数 在日常的工作中,我们时常会遇到这样的需求:点击一用户控件中的服务器按 钮,变更页面上该用户控件以外某处的数据显示。这样就需要在发生该按钮点击行为时,触发其所在页面的相应处理函数。在vb.net中,我们可以利用 RaiseEvent语句来引发定义在所在页面后台代码文件中的相应处理方法,而在C#中,我们可不可以做到这点呢? 回答当然是肯定可以实现的。C#中我们可以利用事件委托来达到同样的效果。 下面,让我们来一步步地解决这个问题。 1、首先,在一aspx页面中包含一用户控件(RaiseControl.ascx),该用户控件内只含有一服务器端控件。 2、在该用户控件的后台代码中声明事件委托、定义事件成员并添加一事件监视函数。代码如下: //声明事件委托 public delegate void PageChangeEventHandler(string psDeliver); //定义事件 public event PageChangeEventHandler MyPageChange; //监视事件 protected void OnPageChange(string psStr) { if (MyPageChange != null) { MyPageChange(psStr); } } 3、在用户控件的按钮事件中,触发已经定义的MyPageChange事件。 protected void btnRaise_Click(object sender, EventArgs e) { string _sStr = "你点击了用户控件中的按钮!"; OnPageChange(_sStr); } 4、在其所在的页面中编写相应的处理函数并在页面的Page_Load中将该处理函数绑定到用户控件中定义的MyPageChange事件。 protected void Page_Load(object sender, EventArgs e) { //利用+=进行事件委托绑定 ctlRaiseControl.MyPageChange += this.DealwithReceived; } /// <summary> /// 为用户控件中MyPageChange事件定义的处理函数 /// </summary> /// <param name="psReceive"></param> private void DealwithReceived(string psReceive) { lblReceive.Text = psReceive; } 至此,我们来看看效果吧。点击按钮,页面显示了按钮单击事件中传入的文字。成功!点击查看原图 机制分析:C#中,委托是一种引用类型。对于一 声明委托,我们可以将任意与之具有相同返回类型和参数列表的函数绑定到其上,也就是使该委托指向绑定的具体方法,这一点类似于C++中的函数指针。在以上 的示例中,我们同样是将页面后台定义的DealwithReceived方法绑定到了用户控件中声明的PageChangeEventHandler委托 上,只不过在委托与具体方法函数之间又隔了一层,这就是“事件”。 .net事件机制是建立在委托基础之上的。可以说,事件是对委托的封装,这主要是基于面向对象的封装机制。在这里,无论是对委托的绑定,还是对委托指向方法的调用,都是通过event来实现的。示意图如下:
0 0
- Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数
- 有效利用ASP.NET用户控件的事件委托
- asp.net中的按钮事件不触发页面验证控件
- asp.net 用户控件中的委托事件SelectedIndexChanged
- asp.net中的按钮在页面上有验证控件的时候不触发按钮事件
- Asp.net用户控件和委托事件
- ASP.NET用户控件事件的定义和实践--C#里的委托和事件实现Observer
- asp.net页面装载用户控件时的事件顺序
- ASP.NET 中页面获取所用用户控件的事件
- asp.net用户控件事件处理
- ASP.NET用户控件操作ASPX页面(在ASPX页面捕捉用户控件的事件)
- ASP.NET 入手页面控件及事件触发
- ASP.NET手动触发页面验证控件事件
- ASP.NET服务器控件【触发事件交给服务器处理】
- 页面(Page)加载用户控件(UserControl)的事件触发顺序
- 页面(Page)加载用户控件(UserControl)的事件触发顺序
- asp.net服务器控件的事件是怎样触发的
- Asp.net 中服务端控件事件是如何触发的
- 10-2. 删除字符串中的子串(20)
- iOS_4_表情排列
- 设计模式:组合模式
- 404交替字符串
- Matrix Matcher uva+AC自动机+求子矩阵出现的次数
- Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数
- 无油版可乐鸡翅
- SqlServer 笔记
- Linux命令之查看、修改日期、时间--date
- 分享一段轮换切图的效果
- 静态sql与动态sql比较
- listadapter中报下标溢出错误
- HDU-#1072 Nightmare(BFS)
- 经纬财富:宿州今日晚评金银操作建议及行情分析