C# 当调用类订阅其事件时,类是否可能响应
我有一个windows窗体,上面有一个按钮,如果调用该按钮的窗体已订阅其中一个窗体自定义事件,我只希望该按钮可见 我知道我可以检查myEvent==null,但是如果在加载表单后订阅了该事件呢 这可能吗C# 当调用类订阅其事件时,类是否可能响应,c#,winforms,C#,Winforms,我有一个windows窗体,上面有一个按钮,如果调用该按钮的窗体已订阅其中一个窗体自定义事件,我只希望该按钮可见 我知道我可以检查myEvent==null,但是如果在加载表单后订阅了该事件呢 这可能吗 (可能只是表单上的一个计时器,不断检查事件是否为null???(听起来很混乱)就像属性事件也有关联的方法一样,因此: public event EventHandler MyEvent { add { // do something } remove {
(可能只是表单上的一个计时器,不断检查事件是否为null???(听起来很混乱)就像属性事件也有关联的方法一样,因此:
public event EventHandler MyEvent {
add {
// do something
}
remove {
// do something
}
}
正如属性一样,事件也有关联的方法,因此:
public event EventHandler MyEvent {
add {
// do something
}
remove {
// do something
}
}
如果是自定义事件,您可以将覆盖放在客户端订阅/取消订阅的位置:
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);
}
}
}
如果是自定义事件,您可以将覆盖放在客户端订阅/取消订阅的位置:
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);
}
}
}