C# —— 自定义事件

1 事件的概念: Event, 基本上说是一个用户操作,例如按键按下的操作、鼠标点击、鼠标移动等等;或者是一些系统提示信息,如手机消息通知,应用程序需要在事件发生时响应事件

2 系统查常用的事件: 按钮的点击事件
    this.button1.click += new SystemEventHanlde(f1)

3 事件和委托的联系?
    事件在类中声明和生成,事件的关键字是event,并且通过使用同一个类或者其他类中委托与事件进行关联,事件基于委托的,可以说事件时委托的一种特殊方式,未委托提供了一个发布和订阅机制

4 发布器和订阅器
    发布器:是一个包含事件和委托定义的一个对象,事件和委托之间的关系也是定义在类里面的,发布器类的对象调用事件,通知其他对象

订阅器: 接收这个事件之后需要触发的函数,写在订阅器类中 

该类是为了定义事件和委托的类,提供一个事件,创建一个事件。一般称为发布器类
    自定义事件功能是当value不一样的情况触发事件函数 

自定义事件的步骤 

1 定义发布器类 添加委托类型和事件对象

 public class EventTest
 {
     // 在定义事件前,先定义一个委托类型与事件对应
     public delegate void NumberHandle();
     // 定义事件 使用关键字event
     // ChangeNum 以后是一个方法 使用changeNum()
     public event NumberHandle ChangeNum;
     public int value;// 当value值 设置一样的时候 触发事件函数。
     public EventTest() // 构造函数初始化value值等于5
     {
         int n = 5;
         SetValue(n);

     }
     // 修改value值的方法
     public void SetValue(int n)
     {
         if(value != n) // 当value值不一样的时候 才去赋值
         {
             value = n; // 证明value已经发生变化,事件就应该被处罚,调用时间函数,就是调用ChangeNUm函数
             if(ChangeNum != null) // 证明有事件函数
             {
                 ChangeNum();// 调用事件函数
             }
             else
             {
                 Console.WriteLine("事件没触发");
             }
         }
     }
 }

 2 定义订阅器类

public class DingYue
{
    // 事件函数 和 发布器类的委托类型必须匹配
    public void PrintF()
    {
        Console.WriteLine("value值被修改了 value修改的事件被触发");
    }
}

3 在main里面进行调用和验证 

static void Main(string[] args)
{
    // 创建事件对象 初始化的时候并没有给事件绑定事件函数 也就是if(ChangeNum != null) 不成立
    EventTest e = new EventTest();
    // 创建一个事件函数对象,
    DingYue d = new DingYue();
    // 开始给发布器里面定义事件赋值,绑定一个事件函数
    e.ChangeNum += d.PrintF; // 注册或者绑定 事件函数 this.button1.click += new SystemEventHanlde(f1)
    // 修改value值 检查printF事件函数是否被执行
    e.SetValue(7);
    e.SetValue(20);
}

最后运行结果如下

 

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值