关于c#中的事件

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

原文链接http://blog.csdn.net/joyhen/article/details/8500211

最近在看委托,然后看到事件,以前一直很模糊,关于事件的触发者和响应者的关联。贴一个简单的例子:

1.新建一个类Control.cs

using System; namespace EventComplex { /* * C#中的事件处理实际上是一种具有特殊签名的delegate */ public class Control { /// <summary> /// 代表事件发送者 /// </summary> /// <param name="sender">代表事件发送者</param> /// <param name="e">事件参数类 /// <remarks>用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生</remarks> /// </param> public delegate void MyEventHandler(object sender, MyEventArgs e);//System.EventArgs e public event MyEventHandler MyEvent; public Control() { this.MyEvent += new MyEventHandler(RaiseSomeEvent); } /// <summary> /// 一个事件 /// </summary> public void RaiseSomeEvent(object sender, MyEventArgs e) { Console.WriteLine("hello " + e.ParamName); Console.ReadLine(); } public void RiseSomeEvent() { //System.EventArgs e = new System.EventArgs(); Console.Write("Please input 'Name':"); string _param = Console.ReadLine();//ReadLine:按下回车以后才读取,然后触发MyEvent事件 //if (_param.Equals("jon"))//在用户输入jon的情况下触发事件,否则不触发 MyEvent(this, new MyEventArgs(_param));//MyEvent(this,e) } } public class MyEventArgs : System.EventArgs { public string ParamName; public MyEventArgs(string _name) { ParamName = _name; } } }

2.我们去Main函数里面测试一下;

public static void demo4() { Control ctr = new Control(); ctr.MyEvent += new Control.MyEventHandler(ResponseSomeEvent); ctr.RiseSomeEvent(); } public static void ResponseSomeEvent(object sender, EventArgs e) { Console.WriteLine("Some event occur!"); }

static void Main(string[] args) { demo4(); }

[flash=500,400]http://s1.knowsky.com/20160211/bjajhfaaogy09.jpg[/flash]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航