C#自定义事件之属性改变引发事件示例
发布时间:2020-12-15 06:02:51 所属栏目:百科 来源:网络整理
导读:本文实例为大家分享了C#属性改变引发事件示例的具体代码,供大家参考,具体内容如下 using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication15{ class Program { static void Main(string[] args
本文实例为大家分享了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; } } } } } } } 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |