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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值