【发布时间】:2011-07-23 16:11:23
【问题描述】:
我可以设置一个事件侦听器,以便在布尔值更改时调用函数吗?
【问题讨论】:
我可以设置一个事件侦听器,以便在布尔值更改时调用函数吗?
【问题讨论】:
您应该在 C# 中使用属性,然后您可以在 setter 中添加任何您想要的处理方式(记录、触发事件……)
private Boolean _boolValue
public Boolean BoolValue
{
get { return _boolValue; }
set
{
_boolValue = value;
// trigger event (you could even compare the new value to
// the old one and trigger it when the value really changed)
}
}
【讨论】:
手动,是的,你可以
public delegate void SomeBoolChangedEvent();
public event SomeBoolChangedEvent SomeBoolChanged;
private bool someBool;
public bool SomeBool
{
get
{
return someBool;
}
set
{
someBool = value;
if (SomeBoolChanged != null)
{
SomeBoolChanged();
}
}
}
但不确定这是否是您要查找的内容。
【讨论】:
这里的重要问题是:当bool 什么发生变化?
由于bool 是一种值类型,因此您不能直接传递对它的引用。因此,在bool 本身上谈论Changed 事件是没有意义的——如果bool 发生变化,它会替换另一个bool,而不是修改。
如果我们谈论的是引用类型上的bool 字段或属性,情况就会发生变化。在这种情况下,公认的做法是将bool 公开为属性(不赞成公共字段)并公开use the INotifyPropertyChanged.PropertyChanged event 以引发“更改”通知。
【讨论】:
研究实施 INotifyPropertyChanged。 MSDN has got a great How To on the subject
【讨论】: