zoukankan      html  css  js  c++  java
  • 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函数,在下面我定义了这个函数,在这个函数里设定了触发事件之后执行的相关操作(注意函数的参数)实际的运行效果就是,在文本框内输入字符,按下按钮后,如果你输入的值和上一次的不同,就会弹出对话框显示这个值~

  • 相关阅读:
    EclipseTool_v1.0.4(eclipse整合开发工具)
    51单片机堆栈深入剖析
    3.进程
    解决卡巴斯基安装失败的一个方法.
    9.串口操作之API篇 ReadFile WriteFile CloseHandle 及总结
    2.内核对象之<创建和关闭内核对象,跨进程共享>
    1.内核对象之<什么是内核对象,使用计数及安全性>
    TeeChart使用小技巧之 点击Series显示名称
    TeeChart使用小技巧之 曲线分页显示,轴分别显示日期
    8.串口操作之API篇 PurgeComm ClearCommError
  • 原文地址:https://www.cnblogs.com/zhangzhu/p/3301704.html
Copyright © 2011-2022 走看看