public class MyText
{
public delegate void ChangedEventHandler(object sender,EventArgs e);
public event ChangedEventHandler Changed; public virtual void OnChanged(EventArgs e)
{
if(Changed !=null)
{
Changed(this,e);
}
}
}class Program
{
static void Main(string[] args)
{
MyText txt = new MyText();
txt.Changed+=new MyText.ChangedEventHandler(txt_Changed);
...
} private static void txt_Changed(object sender,EventArgs e)
{
Console.WriteLine("Text has been changed:{0}" ,((MyText)sender).Text);
}
}
理解事件委托与事件的关系,在以上代码中委托是否可以这样理解:委托是为事件服务的。代码txt.Changed+=new MyText.ChangedEventHandler(txt_Changed);作用就是通过委托ChangedEventHandler给事件Changed指定响应改事件的方法(txt_Changed)。也就是将事件处理方法(txt_Changed)添加到事件Changed调用列表中。
不知我的理解是否正确。各位发表一下意见!
{
public delegate void ChangedEventHandler(object sender,EventArgs e);
public event ChangedEventHandler Changed; public virtual void OnChanged(EventArgs e)
{
if(Changed !=null)
{
Changed(this,e);
}
}
}class Program
{
static void Main(string[] args)
{
MyText txt = new MyText();
txt.Changed+=new MyText.ChangedEventHandler(txt_Changed);
...
} private static void txt_Changed(object sender,EventArgs e)
{
Console.WriteLine("Text has been changed:{0}" ,((MyText)sender).Text);
}
}
理解事件委托与事件的关系,在以上代码中委托是否可以这样理解:委托是为事件服务的。代码txt.Changed+=new MyText.ChangedEventHandler(txt_Changed);作用就是通过委托ChangedEventHandler给事件Changed指定响应改事件的方法(txt_Changed)。也就是将事件处理方法(txt_Changed)添加到事件Changed调用列表中。
不知我的理解是否正确。各位发表一下意见!
参考这个帖子
在事件通讯中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源和接收方之间存在一个媒介(或类似指针的机制)。.NET框架定义了一个特殊的类型(Delegate),该类型提供函数指针的功能。
委托是一个可以对方法进行引用的类。与其他的类不同,委托类具有一个签名,并且它只能对与其签名匹配的方法进行引用。这样,委托就等效于一个类型安全函数指针或一个回调
比如你要租一个房屋,这是一个事件,那么委托就是房屋租赁中介,当你把租房子的消息告知中介后,中介就会产生出一套符合你要求的房屋租赁方案来。再由中介执行这套方案,你便租得了这个房屋,即事件被处理了。C#中使用事件需要的步骤:
1.创建一个委托
2.将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也就有相应的一个委托,在编写关联事件处理程序--也就是当有事件发生时我们要执行的方法的时候我们需要和这个委托有相同的签名)
3.编写事件处理程序
4.利用编写的事件处理程序生成一个委托实例
5.把这个委托实例添加到产生事件对象的事件列表中去,这个过程又叫订阅事件