`

事件委托的例子

 
阅读更多

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());
}
}
}


}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics