动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

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

作者来源: 
阅读 数 163 人次 , 2006-3-29 4:35:00 

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

 本文TagsC#  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:动态生成asp.net控件
· 下一篇:在ASP.NET开发中使用非.Net Web服务
· 从ASP迁移至ASP+ ----------进入DataSet
· 在vs.net bate 2中的ado.net简单编程(傻瓜版)
· 对C# 2.0中匿名方法的怀疑分析
· asp.net高级教程(五)---实战篇(中)    
· Asp.net中处理共享Session的问题


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077