Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当调用类订阅其事件时,类是否可能响应_C#_Winforms - Fatal编程技术网

C# 当调用类订阅其事件时,类是否可能响应

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

我有一个windows窗体,上面有一个按钮,如果调用该按钮的窗体已订阅其中一个窗体自定义事件,我只希望该按钮可见

我知道我可以检查myEvent==null,但是如果在加载表单后订阅了该事件呢

这可能吗


(可能只是表单上的一个计时器,不断检查事件是否为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);
          }
      }
   }