深入解析C#编程中的事件(2)

来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-02 02:18 点击:

下面的例子介绍了事件句柄如何附加到上面的类Button的实例中:

public class LoginDialog: Form

{

 Button OkButton;

 Button CancelButton;

 public LoginDialog() {

  OkButton = new Button(...);

  OkButton.Click += new EventHandler(OkButtonClick);

  CancelButton = new Button(...);

  CancelButton.Click += new EventHandler(CancelButtonClick);

 }

 void OkButtonClick(object sender, Event e) {

  // Handle OkButton.Click event

 }

 void CancelButtonClick(object sender, Event e) {

  // Handle CancelButton.Click event

 }

}

  这里,构造函数LoginDialog创建了两个Button实例,并且把事件句柄附加到事件Click中。

  事件成员是典型域,就像上面的Button例子中所示。在每个事件消耗一个域存储的情况是不可接受的,一个类可以声明事件属性来替代事件域,并且使用私有机制来存储基本的代表。(设想在某种情况下,大多数事件都是未处理的,每个事件使用一个域就不能被接受。使用属性而不是域的能力允许开发人员在空间和时间上面取得一个折中方案。)

  在例子中

class Control: Component

{

 // Unique keys for events

 static readonly object mouseDownEventKey = new object();

 static readonly object mouseUpEventKey = new object();

 // Return event handler associated with key

 protected Delegate GetEventHandler(object key) {...}

 // Set event handler associated with key

 protected void SetEventHandler(object key, Delegate handler) {...}

 // MouseDown event property

 public event MouseEventHandler MouseDown {<

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1