在我们做工业软件中,经常会遇到要实时监控某一点,在这个点变化时去做一些事情
放入程序里呢,就是要实时监控某一属性的值,当值发生变化时触发事件,其核心就是借助属性的Set方法,来判断当前set的值是否与原来的值相等,如果相等直接赋值不予理会,如果不相等,说明值变了,根据自己调用的方法,声明委托,事件,触发方法
核心代码:
public delegate void tempChange(object sender,EventArgs e); public event tempChange onTempChange; private bool _temp= false; public bool Temp { get { return _temp; } set { if (_temp!=value) { onTempChange(new object(),new EventArgs()); } _temp= value;
}
}
下边我们做一个Demo,来测试一下
我们新建一个from,上边添加一个lable,添加一个button 我们通过button来改变这个temp属性的值,使之触发对应的事件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int i = 0; private void Form1_Load(object sender,EventArgs e) { changeEvent += Form1_changeEvent; } void Form1_changeEvent(string value) { this.richTextBox1.Invoke(new Action(() => { this.richTextBox1.AppendText("当前lable的值为" + value+"\r\n"); })); } private void button1_Click(object sender,EventArgs e) { Temp = i + ""; label1.Text = Temp; i++; } public delegate void ChangeDelegate(string value); public event ChangeDelegate changeEvent; public string _temp; public string Temp { get { return _temp; } set { if (_temp != value) { changeEvent(value); } _temp = value; } } } }
测试:
可以看到 我们每点击一次按钮 都改变了temp的值,从而触发了changeEvent事件 ------给richTextBox添加文本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。