C#自定义事件之属性改变引发事件示例

时间:2021-05-20

本文实例为大家分享了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; } } } } } }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章