C#自定义事件之属性改变引发事件示例
本文实例为大家分享了C#属性改变引发事件示例的具体代码,供大家参考,具体内容如下
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication15
{
classProgram
{
staticvoidMain(string[]args)
{
Monitorm=newMonitor();
m.PropertyChanging+=newMonitor.EventHandler(m_PropertyChanging);
m.Year=2014;
m.Year=1890;
m.Year=2013;
}
staticboolFirst=false;
staticvoidm_PropertyChanging(objectsender,PropertyChangingEventArgse)
{
if(First==false)
{
First=true;
}
else
{
if(e.NewValue<1900||e.NewValue>3000)
e.Cancel=true;
}
}
}
//(属性正在改变的时候)事件数据
classPropertyChangingEventArgs:EventArgs
{
//构造函数
publicPropertyChangingEventArgs(stringPropertyName,intOldValue,intNewValue)
{
_PropertyName=PropertyName;
_OldValue=OldValue;
_NewValue=NewValue;
}
//存储数据
privatestring_PropertyName;
privateint_OldValue;
privateint_NewValue;
privatebool_Cancel;
//获取或设置属性
publicstringPropertyName
{
set
{
_PropertyName=value;
}
get
{
return_PropertyName;
}
}
publicintOldValue
{
set
{
_OldValue=value;
}
get
{
return_OldValue;
}
}
publicintNewValue
{
set
{
_NewValue=value;
}
get
{
return_NewValue;
}
}
publicboolCancel
{
set
{
_Cancel=value;
}
get
{
return_Cancel;
}
}
}
classMonitor
{
//定义委托
publicdelegatevoidEventHandler(objectsender,PropertyChangingEventArgse);
//定义事件
publiceventEventHandlerPropertyChanging;
//事件处理(用属性方法)
int_YearValue;
publicintYear
{
get
{
return_YearValue;
}
set
{
if(_YearValue!=value)
{
if(PropertyChanging!=null)
{
PropertyChangingEventArgse=newPropertyChangingEventArgs("Year",_YearValue,value);
PropertyChanging(this,e);
if(e.Cancel)
{
return;
}
else
{
_YearValue=value;
}
}
}
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。