• C#自定义事件 范例:监视变量变化


    很多时候我们需要程序具有一种功能,就是当满足某一条件时触发某个动作,使用C#的事件机制就可以达到这个目的下面的例子是一个很好的演示,这段代码实现了对一个变量的监视,一旦变量发生改变,就触发动作

    定义事件类:

    1.     class Event
    2.     {
    3.         public delegate void tempChange(object sender, EventArgs e);
    4.         public event tempChange OntempChange;
    5.         string temp;
    6.         public string Temp
    7.         {
    8.             get
    9.             {
    10.                 return temp;
    11.             }
    12.             set
    13.             {
    14.                 if (temp != value)
    15.                 {
    16.                     OntempChange(this, new EventArgs());
    17.                 }
    18.                 temp = value;
    19.             }
    20.         }
    21.     }
    复制代码

    分析:
    要定义一个事件,首先声明事件和委托

    具体格式如下:
    声明委托

    1. public delegate void 事件句柄函数(object sender,EventArgs e);
    复制代码


    object用来传递事件的发生者,EventArgs用来传递事件的细节

    下面定义一个此委托类型类型的事件

    1. public event 事件句柄函数 事件名;
    复制代码


    在这里,我定义了一个名为OntempChange的事件,并在属性访问器里设定当读取值与原值不同时触发该事件





    使用事件(部分代码):

    1.     public partial class Form1 : Form
    2.     {
    3.         Event ven = new Event();
    4.         public Form1()
    5.         {
    6.             ven.OntempChange += new Event.tempChange(ven_OntempChange);
    7.             InitializeComponent();
    8.         }
    9.         void ven_OntempChange(object sender, EventArgs e)
    10.         {
    11.             MessageBox.Show(ven.Temp);
    12.         }
    13.         private void button1_Click(object sender, EventArgs e)
    14.         {
    15.             ven.Temp = textBox1.Text;
    16.         }
    复制代码

    在C#中,使用+=运算符将事件绑定给函数,在这里我把OntempChange事件绑定给了ven_OntempChange函数,在下面我定义了这个函数,在这个函数里设定了触发事件之后执行的相关操作(注意函数的参数)实际的运行效果就是,在文本框内输入字符,按下按钮后,如果你输入的值和上一次的不同,就会弹出对话框显示这个值~

  • 相关阅读:
    S3C44b0x通用延时函数,延时time个100us函数理解
    LeetCode-058-最后一个单词的长度
    LeetCode-053-最大子序和
    LeetCode-035-搜索插入位置
    LeetCode-027-移除元素
    LeetCode-026-删除有序数组中的重复项
    LeetCode-025-K 个一组翻转链表
    LeetCode-024-两两交换链表中的节点
    LeetCode-023-合并K个升序链表
    LeetCode-021-合并两个有序链表
  • 原文地址:https://www.cnblogs.com/zhangzhu/p/3301704.html
Copyright © 2020-2023  润新知