C#事件-自定义事件的使用方法
2012-06-28 09:01
302 查看
1、声明一个委托类 public delegate SomethingChangedHandler(object sender,EventArgs e);
2、在你的类中声明一个事件绑定到该委托 public event SomethingChangedHandler Changed;
3、在相应的方法中触发此事件
public void ChangeSomething()
{
Changed(this,new EventArgs); //触发事件
}
4、在调用者订阅事件
your class's instance.Changed+=new SomethingChangedHandler(你的方法名);
5、取消订阅
订阅该事件的对象.Changed-=new SomethingChangedHandler(你的方法名);
注意:因为c#中事件是通过委托实现的,而委托不能被继承,所以导致事件只能在其定义的类中按事件名(该事件委托的参数...) 的形式触发。如果一个事件需要在派生类中被触发,可以在基类中定义一个触发该事件的方法 SendSomeEvent(),派生类中重写该方法,并调用base.SendSomeEvent();
看下面的实例:
namespace ConsoleApplication3
{
class 出版社 //定义出版社类
{
public delegate void 出版(); //声明事件所需的代理
public event 出版 已经出版; //事件的声明
public void 发行() //触发事件的方法
{
Console.WriteLine("发行刊物");
已经出版();
}
}
class 订阅者 //定义订阅者类
{
public void 订阅()
{
Console.WriteLine("订阅者已经订阅");
}
}
class Program
{
static void Main(string[] args)
{
出版社 甲出版社=new 出版社();
订阅者 张三=new 订阅者();
甲出版社.已经出版+=new 出版社.出版(张三.订阅); //向事件发行者订阅一个元事件
甲出版社.发行(); //触发事件
}
}
}
using System;
public class Publisher //出版社
{
public delegate void Publish(string name); //声明事件所需的代理
public event Publish OnPublish; //事件的声明
public void issue(string _name) //触发事件的方法
{
if (OnPublish != null)
{
Console.WriteLine("发行刊物");
OnPublish(_name);
}
}
}
class Subscriber //订阅者
{
public void Receive(string str) //定义事件处理程序
{
Console.WriteLine("订阅者" + str + "已经收到了刊物!");
}
}
class story
{
static void Main()
{
Publisher Pub = new Publisher();
Subscriber zs = new Subscriber();
Pub.OnPublish += new Publisher.Publish(zs.Receive);
Pub.issue("张三"); //触发事件
}
}
2、在你的类中声明一个事件绑定到该委托 public event SomethingChangedHandler Changed;
3、在相应的方法中触发此事件
public void ChangeSomething()
{
Changed(this,new EventArgs); //触发事件
}
4、在调用者订阅事件
your class's instance.Changed+=new SomethingChangedHandler(你的方法名);
5、取消订阅
订阅该事件的对象.Changed-=new SomethingChangedHandler(你的方法名);
注意:因为c#中事件是通过委托实现的,而委托不能被继承,所以导致事件只能在其定义的类中按事件名(该事件委托的参数...) 的形式触发。如果一个事件需要在派生类中被触发,可以在基类中定义一个触发该事件的方法 SendSomeEvent(),派生类中重写该方法,并调用base.SendSomeEvent();
看下面的实例:
namespace ConsoleApplication3
{
class 出版社 //定义出版社类
{
public delegate void 出版(); //声明事件所需的代理
public event 出版 已经出版; //事件的声明
public void 发行() //触发事件的方法
{
Console.WriteLine("发行刊物");
已经出版();
}
}
class 订阅者 //定义订阅者类
{
public void 订阅()
{
Console.WriteLine("订阅者已经订阅");
}
}
class Program
{
static void Main(string[] args)
{
出版社 甲出版社=new 出版社();
订阅者 张三=new 订阅者();
甲出版社.已经出版+=new 出版社.出版(张三.订阅); //向事件发行者订阅一个元事件
甲出版社.发行(); //触发事件
}
}
}
using System;
public class Publisher //出版社
{
public delegate void Publish(string name); //声明事件所需的代理
public event Publish OnPublish; //事件的声明
public void issue(string _name) //触发事件的方法
{
if (OnPublish != null)
{
Console.WriteLine("发行刊物");
OnPublish(_name);
}
}
}
class Subscriber //订阅者
{
public void Receive(string str) //定义事件处理程序
{
Console.WriteLine("订阅者" + str + "已经收到了刊物!");
}
}
class story
{
static void Main()
{
Publisher Pub = new Publisher();
Subscriber zs = new Subscriber();
Pub.OnPublish += new Publisher.Publish(zs.Receive);
Pub.issue("张三"); //触发事件
}
}
相关文章推荐
- C#事件-自定义事件的使用方法
- C#事件-自定义事件的使用方法
- C#事件-自定义事件的使用方法
- C#事件-自定义事件的使用方法(转载)
- C#事件-自定义事件的使用方法
- C#事件-自定义事件的使用方法
- C# 自定义事件并使用自定义事件参数方法
- C#事件(event)使用方法详解
- C#中事件方法的使用
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- 深入理解 c# 第五章 使用了忽略参数的匿名方法来订阅事件
- C#基础精华07(委托事件,委托的使用,匿名方法)
- C#基础精华07(委托事件,委托的使用,匿名方法)
- C# 事件的使用 在窗体2种触发窗体1 使得窗体1执行某个方法
- [转]使用C#进行图像处理的几种方法
- C#使用浏览按钮获得文件路径和文件夹路径的方法
- jQuery之鼠标事件 、表单事件、键盘事件、事件的绑定和解绑、事件对象的使用、自定义事件
- C#进程的使用方法详解
- C#脱离Halcon编程开发环境使用方法
- 【C#基础】之WinForm窗体常用控件的属性、方法及事件简介