泛型:改变变量值触发的事件
来源:互联网 发布:linux设置root密码 编辑:程序博客网 时间:2024/05/22 03:07
网上查不着,非是没人会,而是懒的写,那我就整一个,或抛砖引玉:
public class ClassVarEvent<T> { private T myValue; public T MyValue { get { return myValue; } set { if (compare(value, myValue) == false) WhenMyValueChange(); myValue = value; } } private bool compare(T x, T y) { return EqualityComparer<T>.Default.Equals(x, y); } public delegate void MyValueChanged(object sender, EventArgs e); public event MyValueChanged OnMyValueChanged; public ClassVarEvent() { myValue = default(T); OnMyValueChanged += new MyValueChanged(afterMyValueChanged); } private void afterMyValueChanged(object sender, EventArgs e) { //do something } private void WhenMyValueChange() { if (OnMyValueChanged != null) { OnMyValueChanged(this, null); } } }
使用:
private int ii = 0; private string ss = ""; private bool bb = false; private ClassVarEvent<int> x = new ClassVarEvent<int>(); private ClassVarEvent<string> y = new ClassVarEvent<string>(); private ClassVarEvent<bool> z = new ClassVarEvent<bool>();
。。。
x.OnMyValueChanged += (s, ee) => { FuncIntVarChangeEvent(ii);}; y.OnMyValueChanged += (s, ee) => { FuncStringVarChangeEvent(ss); }; z.OnMyValueChanged += (s, ee) => { FuncBoolVarChangedEvent(bb); };
。。。
private void button1_Click(object sender, EventArgs e)//整数 { ii++; x.MyValue = ii; richTextBox1.Text += "\r\n" + x.MyValue.ToString(); } private void button3_Click(object sender, EventArgs e)//字符串 { y.MyValue += ii.ToString(); ii++; ss = ii.ToString(); richTextBox1.Text += "\r\na_" + y.MyValue; } private void FuncIntVarChangeEvent(int ii) { richTextBox1.Text += "\r\n 触发了: " + ii.ToString(); } private void FuncStringVarChangeEvent(string ss) { richTextBox1.Text += "\r\n 触发了: " + ss; } private void button2_Click(object sender, EventArgs e) { if (bb == false) bb = true; else bb = false; z.MyValue = bb; } private void FuncBoolVarChangedEvent(bool bbb) { richTextBox1.Text += "\r\n 触发了: " + bbb.ToString(); }
实例:
MDIParent 由一子窗体创建另一属于 MDIParent 的子窗体---
1. MDIParent 中:
public static bool My_BoolVar = false; public static T_VarEvent<bool> My_T_VarEvent = new T_VarEvent<bool>();...
private void FuncBoolVarChangedEvent(bool _b) { if (_b == true) { this.Cursor = Cursors.WaitCursor; FormCitizen.FormCitizen f = new FormCitizen.FormCitizen(); f.MdiParent = this; f.WindowState = FormWindowState.Maximized; f.Show();
this.Cursor = Cursors.Default; } }2. 作为调用者的子窗体:
首先添加引用
然后(某个 do something):
客户管理系统.MDIParent.My_BoolVar = true; 客户管理系统.MDIParent.My_T_VarEvent.MyValue = true; 客户管理系统.MDIParent.My_BoolVar = false; 客户管理系统.MDIParent.My_T_VarEvent.MyValue = false;完毕!
0 0
- 泛型:改变变量值触发的事件
- 变量值发生变化触发事件
- C#使用事件监控变量值的改变
- 管道 无法改变变量值 的问题
- 改变URL中的变量值
- jbpm4.3 改变变量值
- 内存越界导致的变量值被改变
- C++两种通过参数改变变量值的方法
- 希望改变方法&test()内部的变量值$b
- memcopy引起的其他变量值突然改变
- 变量值的变换
- stm32中断函数改变全局变量值
- 不通过setter方法改变私有变量值
- 闭包中变量值的改变
- winform窗体大小改变触发的事件
- 对ddl的改变自动触发事件
- input标签内容改变的触发事件
- input标签内容改变的触发事件
- spring集成beetlsql
- Android 照相机拍照,压缩后储存于SD卡
- 安卓控件——AutoCompleteTextView和MultiAutoCompleteTextView实现自动匹配输入的内容
- Eclipse开发常用快捷键
- 编程式事务管理
- 泛型:改变变量值触发的事件
- Balanced Binary Tree
- Socket通信原理,TCP,UDP协议
- VS2015 生成.lib文件
- Solr 6.0 学习(十四)Solr RequstHandler
- Training Set, Validation Set 和Testing Set之间的差别及关系
- 三大卫视跨年晚会网络直播,竟都由这家企业负责,到底有啥背景?
- 这两天遇到的scikit-learn的问题
- mac 下用 brew 安装mongodb