Вы должны проверить инициализацию ваших объектов. В то время как ваш код выглядит так, как будто все находится в одном классе, я не уверен, почему вам пришлось бы испытывать головную боль при создании событий, а не просто вызывать метод.
ОДНАКО, если вы поднимаете событие в одном классе и пытаетесь обработать его в другом, вы можете столкнуться с тем же, что и я. Позвольте мне объяснить ...
MDIParent - содержит код экземпляра для дочерней формы. Также имеется код для подключения обработчика событий дочернего элемента к коду на MDIParent.
Form x = new MyTestForm();
x.OnMyEvent += this.HandleEvent(myEventArgs);
MDIChild - содержит код, который мы используем для создания события и фактического его запуска.
public MyTestForm()
{
public event EventHappened MyEventHandler;
}
Позже в коде мы фактически поднимаем событие.
MyEventHandler(new MyEventArgs(this, "some message");
Проблема, с которой я столкнулся во всех моих обработчиках событий, которые мы использовали для обновления StatusBar, заключалась в том, что подключение события не происходило до тех пор, пока форма не была полностью инициализирована. Это означает, что вся работа по настройке формы была завершена к тому времени, когда мы фактически связали событие с чем-либо!
Как я справился с этим, спросите вы? Ну, я переместил весь код инициализации в отдельный метод и из конструктора. Мы вызываем конструктор для создания экземпляра формы, связываем события и затем выполняем все задачи создания формы.
Надеюсь, это кому-нибудь поможет! Я потратил дни, пытаясь понять, почему мои события были нулевыми, когда я мог ясно видеть, что они были назначены!