Отмена события закрытия формы работает для предотвращения:
- Пользователь закрывает форму
- Приложение. Выход из приложения
- Код от звонка в форму. Закрыть на форму
Но это не помогает предотвратить:
- Пользователь закрывает основную форму приложения
- Код вызова формы. Укажите на форме
- Код вызова формы. Закрыть в главном окне приложения
Последние 3 случая даже не вызывают событие закрытия формы на неосновной форме, поэтому форма исчезает без возможности ее отмены. Возможно, ваше приложение заставляет форму сначала закрыться одним из первых трех способов, который вызывает событие, а затем одним из вторых трех способов (или чем-то похожим), который не вызывает событие и принудительно закрывает форму в любом случае. .
Edit:
Добавьте эту функцию в код вашей формы, и она позволит вам просмотреть в отладчике, как выглядит стек вызовов, когда ваше окно закрывается, чтобы вы могли увидеть, что на самом деле вызывает его:
protected override void DestroyHandle()
{
System.Diagnostics.Debugger.Break();
base.DestroyHandle();
}