定义一个事件类型
public class PropertyValueChangedEventArgs : EventArgs { private string _propertyName; private object _oldValue; private object _newValue; public PropertyValueChangedEventArgs() : base() { } public PropertyValueChangedEventArgs(string propertyName, object oldValue, object newValue) : base() { _propertyName = propertyName; _oldValue = oldValue; _newValue = newValue; } public string PropertyName { get { return _propertyName; } set { _propertyName = value; } } public object OldValue { get { return _oldValue; } set { _oldValue = value; } } public object NewValue { get { return _newValue; } set { _newValue = value; } } }
定义一个事件测试使用的类
public class TestPropertyValueChangedEventArgs { private static readonly object uniqueLock = new object(); private static TestPropertyValueChangedEventArgs _Instance = null; public static TestPropertyValueChangedEventArgs Instance { get { lock (uniqueLock) { if (_Instance == null) { _Instance = new TestPropertyValueChangedEventArgs(); } } return _Instance; } } public event EventHandler<PropertyValueChangedEventArgs> PropertyChanged; private void OnPropertyChanged(string aPropertyName, object aOldValue, object aNewValue) { PropertyValueChangedEventArgs e = new PropertyValueChangedEventArgs(aPropertyName, aOldValue, aNewValue); if (PropertyChanged != null) { PropertyChanged(this, e); } } public void SetString(string strOldString, string strNewString) { OnPropertyChanged("Test_SetString", strOldString, strNewString); } }
注册事件
TestPropertyValueChangedEventArgs.Instance.PropertyChanged += new EventHandler<PropertyValueChangedEventArgs>(PropertyChanged);
使用事件
private void button2_Click(object sender, EventArgs e) { Thread thread = new Thread( () => { TestPropertyValueChangedEventArgs.Instance.SetString("_OLD2", "_NEW2"); } ); thread.Start(); } private void PropertyChanged(object sender, PropertyValueChangedEventArgs e) { if (e.PropertyName == "Test_SetString") { this.txtLog.Text += "收到设置属性Test_SetString事件,设置内容为:" + e.NewValue + "\n"; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?