C# 事件委托
事件委托
事件概述
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它
并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
事件的声明
1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e);
2.声明一个事件 public event EventHandler Changed;
3.引发一个事件 public OnChanged(EnventArgs e) { if ( Changed != null) { Changed(this,e); } }
4.定义事件处理程序 public MyText_OnChanged(Object sender,EventArgs e) { ... }
5.订阅事件(将事件处理程序添加到事件的调用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
下面的一个小例子说明了怎样定义一个完整的事件机制:
- C# code
-
事件委托
事件概述
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它
并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
事件的声明
1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e);
2.声明一个事件 public event EventHandler Changed;
3.引发一个事件 public OnChanged(EnventArgs e) { if ( Changed != null) { Changed(this,e); } }
4.定义事件处理程序 public MyText_OnChanged(Object sender,EventArgs e) { ... }
5.订阅事件(将事件处理程序添加到事件的调用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
下面的一个小例子说明了怎样定义一个完整的事件机制:- C# code
-
事件委托 事件概述 事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它 并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装 事件的声明 1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e); 2.声明一个事件 public event EventHandler Changed; 3.引发一个事件 public OnChanged(EnventArgs e) { if ( Changed != null) { Changed(this,e); } } 4.定义事件处理程序 public MyText_OnChanged(Object sender,EventArgs e) { ... } 5.订阅事件(将事件处理程序添加到事件的调用列表中) myText.Changed += EventHandler(MyText_OnChanged); 下面的一个小例子说明了怎样定义一个完整的事件机制: C# code using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { MyText myText = new MyText(); // 将事件处理程序添加到事件的调用列表中(即事件布线) myText.Changed += new MyText.ChangedEventHandler(myText_Changed); string str = ""; while (str != "quit") { Console.WriteLine("please enter a string:"); str = Console.ReadLine(); myText.Text = str; } } // 对Change事件处理的程序 private static void myText_Changed(object sender, EventArgs e) { Console.WriteLine("text has been changed :{0}\n" ,((MyText)sender).Text); } } public class MyText { private string _text = ""; // 定义事件的委托 public delegate void ChangedEventHandler(object sender, EventArgs e); // 定义一个事件 public event ChangedEventHandler Changed; // 用以触发Change事件 protected virtual void OnChanged(EventArgs e) { if (this.Changed != null) this.Changed(this, e); } // Text属性 public string Text { get { return this._text; } set { this._text = value; // 文本改变时触发Change事件 this.OnChanged(new EventArgs()); } } } }