我有一个带有按钮的窗体,我只希望该按钮可见,如果调用它的窗体已订阅其中一个窗体自定义事件。
我知道我可以检查myEvent == null,但是如果在加载表单后订阅了该事件会怎样?
这可能吗?
(也许只是表单上的一个计时器,不断检查事件是否为空?(虽然听起来很乱)
答案 0 :(得分:4)
如果是自定义事件,您可以将覆盖置于客户端订阅/取消订阅的位置:
private EventHandler _customEventDelegate;
public event EventHandler MyCustomEvent
{
add
{
bool wasNull = (_customEventDelegate == null);
_customEventDelegate += value;
if(wasNull)
{
this.ChangeButtonVisibility(true);
}
}
remove
{
_customEventDelegate -= value;
if(_customEventDelegate == null)
{
this.ChangeButtonVisibility(false);
}
}
}
答案 1 :(得分:2)
就像属性事件也有相关的方法一样:
public event EventHandler MyEvent {
add {
// do something
}
remove {
// do something
}
}