Может ли класс отвечать, когда вызывающий класс подписывается на одно из его событий? - PullRequest
1 голос
/ 15 декабря 2009

У меня есть форма окна с кнопкой на ней, и я хочу, чтобы эта кнопка была видимой только в том случае, если форма, которая ее вызывает, подписалась на одно из пользовательских событий форм.

Я знаю, что могу проверить, имеет ли myEvent == значение null, но что, если на событие подписаться после загрузки формы?

Возможно ли это?

(Возможно, это просто таймер в форме, постоянно проверяющий, является ли событие нулевым ?? (хотя это звучит грязно)

Ответы [ 2 ]

4 голосов
/ 15 декабря 2009

Если это пользовательское событие, вы можете установить переопределения того, где клиент подписывается / отписывается:

   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);
          }
      }
   }
2 голосов
/ 15 декабря 2009

Точно так же, как свойства события имеют связанные методы, так что:

public event EventHandler MyEvent {
    add {
        // do something
    }
    remove {
        // do something 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...