using System;
using System.Collections.Generic;
using System.Text;
namespace EventHanlderTest
{
public class Program
{
// 事件的声明
//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);
public static void Main(string[] args)
{
MyText myText = new MyText();
// 将事件处理程序添加到事件的调用列表中(即事件布线)
myText.Changed += new MyText.ChangedEventHandler(myText_Changed);
string str = "";
//while (str != "quit")
//{
if (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);
Console.WriteLine("text has been changed :");
}
}
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());
}
}
}
}