随笔 - 163  文章 - 2  评论 - 370  阅读 - 46万 

定义一个事件类型

复制代码
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";
            }
        }
复制代码

 

posted on   风浪  阅读(115)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示