C#自定义事件之属性改变引发事件示例
本文实例为大家分享了C#属性改变引发事件示例的具体代码,供大家参考,具体内容如下
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication15 { class Program { static void Main(string[] args) { Monitor m = new Monitor(); m.PropertyChanging += new Monitor.EventHandler(m_PropertyChanging); m.Year = 2014; m.Year = 1890; m.Year = 2013; } static bool First=false; static void m_PropertyChanging(object sender, PropertyChangingEventArgs e) { if (First==false) { First = true; } else { if (e.NewValue < 1900 || e.NewValue > 3000) e.Cancel = true; } } } //(属性正在改变的时候)事件数据 class PropertyChangingEventArgs : EventArgs { //构造函数 public PropertyChangingEventArgs(string PropertyName, int OldValue, int NewValue) { _PropertyName = PropertyName; _OldValue = OldValue; _NewValue = NewValue; } //存储数据 private string _PropertyName; private int _OldValue; private int _NewValue; private bool _Cancel; //获取或设置属性 public string PropertyName { set { _PropertyName = value; } get { return _PropertyName; } } public int OldValue { set { _OldValue = value; } get { return _OldValue; } } public int NewValue { set { _NewValue = value; } get { return _NewValue; } } public bool Cancel { set { _Cancel = value; } get { return _Cancel; } } } class Monitor { //定义委托 public delegate void EventHandler(object sender, PropertyChangingEventArgs e); //定义事件 public event EventHandler PropertyChanging; //事件处理(用属性方法) int _YearValue; public int Year { get { return _YearValue; } set { if (_YearValue != value) { if (PropertyChanging != null) { PropertyChangingEventArgs e = new PropertyChangingEventArgs("Year", _YearValue, value); PropertyChanging(this, e); if (e.Cancel) { return; } else { _YearValue = value; } } } } } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
赞 (0)