public class MyClass
{
private int stauts =0; public int Stauts
{
get{return status;}
set{status = value;}
}
}这是我的类,里面有个属性,
我要当属性的值改变时触发事件,对其值作出判断,然后再作相应处理。
这个事件怎么写?请大家指点。
{
private int stauts =0; public int Stauts
{
get{return status;}
set{status = value;}
}
}这是我的类,里面有个属性,
我要当属性的值改变时触发事件,对其值作出判断,然后再作相应处理。
这个事件怎么写?请大家指点。
解决方案 »
- 如何利用C#实现多进程通信?
- C#求助
- 几个问题
- ASP.NET2.0 C# 如何在不使用母板也的情况下设置网页的keywords 和description
- 请问如何获取服务器端的时间和本机的ip地址啊?
- 怎样进行复合性查询?也就是混合性查询(条件有长有短)?
- Color 类型的变量值,如何转换成为如#FFFFFF格式的字符串?
- contains Microsoft licensed software,the use of which is governed by a break-the-seal EULA.如何翻译?
- C#中按照value排序后还能记住key的实现,急求!高手指点!
- 安装SQL SERVER2000的桌面引擎的时候,总报“无效的实例名称”,请问怎么解决?
- 求从SQLserver2000中将表的数据导入到Excel的(C#)的操作代码 用于网页的模式(B/S)
- 水晶报表里绑定到DataSet字段
{
if (Start != null)
{
Start(sender, value);
}
} public event StartEventHandler Start; public int Stauts
{
get{return status;}
set{status = value;
OnStart(this, new EventArgs());
}
}
{
//定义事件参数
public class ValueSettingEventArgs : EventArgs
{
private int m_Value;
private bool m_cancel;
public ValueSettingEventArgs(int value)
{
this.m_Value = value;
}
public int Value
{
get
{
return this.m_Value;
}
}
public bool Cancel
{
get
{
return this.m_Value;
}
set
{
this.m_Value = value;
}
}
}
private int stauts = 0;
//声明事件
public event EventHandler<ValueSettingEventArgs> ValueSetting;
public int Stauts
{
get { return status; }
set
{
if (status != value)
{
if (ValueSetting != null)
{
ValueSettingEventArgs args = new ValueSettingEventArgs(value);
ValueSetting(this, args);//引发自定义事件
if (args.Cancel)
{
return;
}
}
status = value;
}
}
}
}
lz只需要定义一个PropertyChangedEventHandler PropertyChanged就可以,而且用在控件绑定的时候会大大减轻你的工作,因为这是MS“官方”承认的接口。
public delegate void EventHandlerStautsChanged(int Costs);//+
public class MyClass
{
//定义事件
public event EventHandlerStautsChanged StautsChanged;//+ private int stauts =0; public int Stauts
{
get{return status;}
set{
status = value;
//触发事件
if (null!=StautsChanged) //+
StautsChanged(status ); //+
}
}
}//外部调用
MyClass实列.StautsChanged+= new EventHandlerStautsChanged(this.StautsChanged);
private void StautsChanged(int Stauts)
{
//加入自己的应用
}
若还有别的地方能使Stauts改变在你对Stauts 能改变的地方加上事件的应用即可
我自己的做法就是在set中调用一个事件处理方法。
如果是2003的话就自己定义一个事件好了。
public class Sample
{
private int status; public int Stauts
{
get { return status; }
set
{
if (status != value)
{
status = value;
OnPropertyChanged("Status");
}
}
}
public event PropertyChangedHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedArgs(propertyName));
}
}
} public delegate void PropertyChangedHandler(object sender,PropertyChangedArgs args); public class PropertyChangedArgs : EventArgs
{
public PropertyChangedArgs() { } public PropertyChangedArgs(string propertyName) { this.propertyName = propertyName; } private string propertyName; public string PropertyName
{
get { return propertyName; }
set { propertyName = value; }
}
}