C#中的事件处理程序
来源:互联网 发布:网络优化工程师干嘛的 编辑:程序博客网 时间:2024/05/21 07:15
C#中的事件处理程序是一个带有特定输入参数的代理,如下所示:
public delegate void MyEventHandler(object sender, MyEventArgs e);
上面定义中的第一个参数(sender)指定了发生事件的对象,第二个参数(e)存储着在事件处理程序中要用到的数据。MyEventArgs类是继承EventArgs类得来的,EventArgs类是MouseEventArgs、ListChangedEventArgs等更专业化的类的基础类。对于GUI事件,我们可以使用这些特定的EventArgs类的对象,而无需自己创建特定的EventArgs类。然而,对于非GUI事件而言,我们仍然需要创建自己的特定的EventArgs类,存储希望向代理对象传递的数据。我们可以通过继承EventArgs类创建自己特定的EventArgs类:
public class MyEventArgs EventArgs{
public string m_myEventArgumentdata;
}
在事件处理程序中,代理对象的调用需要用到event关健字,如下所示:
public event MyEventHandler MyEvent;
下面我们将建立二个类,体会.Net框架中事件处理机制的工作原理。在对代理的讨论的第二个步骤中,要求我们定义与定义的代理有完全相同的输入参数的方法。在我们的例子中,类A将提供事件处理程序(与代理对象具有相同输入参数的方法。),它将创建代理对象(对代理讨论中的第三步)并安装事件处理程序。类A然后会将代理对象传递给类B。当类B中有事件出现时,它就会执行类A中的事件处理程序方法。
using System;
//步骤1:创建代理对象
public delegate void MyHandler1(object sender,MyEventArgs e);
public delegate void MyHandler2(object sender,MyEventArgs e);
//步骤2:创建事件处理程序方法
class A{
public const string m_id="Class A";
public void OnHandler1(object sender,MyEventArgs e){
Console.WriteLine("I am in OnHandler1 and MyEventArgs is {0}", e.m_id);
}
public void OnHandler2(object sender,MyEventArgs e){
Console.WriteLine("I am in OnHandler2 and MyEventArgs is {0}", e.m_id);
}
//步骤3:创建代理,安装事件处理程序,并向启动事件的对象注册。
public A(B b){
MyHandler1 d1=new MyHandler1(OnHandler1);
MyHandler2 d2=new MyHandler2(OnHandler2);
b.Event1 +=d1;
b.Event2 +=d2;
}
}
//步骤4:通过代理调用封装的方法。
class B{
public event MyHandler1 Event1;
public event MyHandler2 Event2;
public void FireEvent1(MyEventArgs e){
if(Event1 != null){
Event1(this,e);
}
}
public void FireEvent2(MyEventArgs e){
if(Event2 != null){
Event2(this,e);
}
}
}
public class MyEventArgs EventArgs{
public string m_id;
}
public class Driver{
public static void Main(){
B b= new B();
A a= new A(b);
MyEventArgs e1=new MyEventArgs();
MyEventArgs e2=new MyEventArgs();
e1.m_id ="Event args for event 1";
e2.m_id ="Event args for event 2";
b.FireEvent1(e1);
b.FireEvent2(e2);
}
}
- C#中的事件处理程序
- C# 中的事件处理
- C# 中的事件处理
- c# 清除别人的控件中的原有事件处理程序
- C#中的事件处理机制
- C#中的键盘处理事件
- C#中的事件处理机制
- JavaScript中的事件处理程序
- Javascript中的事件处理程序
- C#中的事件和事件处理
- C#中共享事件处理程序
- C#事件处理程序的写法
- C#事件处理程序的写法
- javascript中的事件流,事件处理程序/事件监听器
- 关于c#中的事件处理机制
- C#中的事件定义与处理
- C#中的预定义事件处理机制
- 了解c#中的事件处理机制
- 开张篇
- 0308问题总结
- 写人两笔 做人一生
- 2010年的春天将要面临所以大学生的共同问题 --迷茫
- 网络技术常用语
- C#中的事件处理程序
- 美丽的懈后---初遇tester
- Google电子地图基础及应用
- 了解C#中的预定义事件处理机制【整理】
- Window 中窗口的层次关系以及窗口的属性【整理】
- 递归排列和字典序排列
- 曾经花上数十小时编写过的QQ农场辅助精灵
- 十八个绝招把你从压力中营救出来
- 敏捷开发