Как я могу сказать, кто устанавливает Cancel в true в OnClosing в C # WinForms? - PullRequest
1 голос
/ 11 ноября 2011

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

Проблема в том, что что-то где-то в моем приложении приводит к тому, что для CancelEventArgs.Cancel устанавливается значение true, так что значение Cancel равно true на пути к моей функции OnClosing. Что касается жизни, я не могу понять, где это происходит.

Если я посмотрю на стек вызовов в OnClosing, то не будет ничего, кроме какого-то внешнего кода и моего Application.Run.

Итак, вопрос в том, как я могу выяснить, кто устанавливает Cancel = true?

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Вы говорите, что e.Cancel верно, когда вы вводите OnClosing?

Одна из возможных причин этого заключается в том, что если метод Validate не работает, есть ли у вас какие-либо средства проверки ...

Посмотрите на отражатель, и вы увидите

private void WmClose(ref Message m)
{
  blah....
  e.Cancel = !base.Validate(true);
  blah....      
0 голосов
/ 11 ноября 2011

Вы можете запустить свое приложение в режиме отладки и устанавливать точки останова в каждом выражении Cancel = true.

Приложение остановится в вызываемом операторе, и вы увидите, где оно находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...