【发布时间】:2011-08-10 07:24:17
【问题描述】:
不知道有没有办法在布尔字段从真变为假时直接控制一些事件?
类似于使用委托?
实际上我有很多用户输入控件(复选框、文本框等),我正在寻找一种方法来使用 foreach 和 control.disabled 的东西。
【问题讨论】:
标签: c# events delegates boolean
不知道有没有办法在布尔字段从真变为假时直接控制一些事件?
类似于使用委托?
实际上我有很多用户输入控件(复选框、文本框等),我正在寻找一种方法来使用 foreach 和 control.disabled 的东西。
【问题讨论】:
标签: c# events delegates boolean
属性总是适合从内部触发事件:
private bool check = false;
public bool MyCheckboxChecked
{
get
{
return check;
}
set
{
if (check == true && value == false)
MyEvent("MyCheckboxChecked is about to change from true to false!");
check = value;
}
}
如果您想监控控件的公共字段(即CheckBox.Checked),您可以随时连接它们已经提供的事件,例如CheckedChanged。
【讨论】:
使用属性来设置字段值。在属性的 setter 中引发 PropertyChanged 事件。
示例代码:
bool Flag
{
get { return this.flag; }
set
{
if (this.flag != value)
{
this.flag = value;
// Raise PropertyChanged event here ..
}
}
}
【讨论】:
没错。如果你使用 WPF,你可以实现 INotifyPropertyChanged 接口和 Binding,非常方便。
或者使用动作:
private bool isIt;
public Action YourAction{get; set;}
public bool IsIt
{
get{return isIt;}
set{isIt = value; if(YourAction != null) YourAction();}
}
【讨论】:
当然有,在属性的 set 访问器上使用事件引发器,而不是直接更改成员变量...
【讨论】: