WPF: Есть ли событие, которое вызывается, когда пользователь нажимает кнопку закрытия [X]? - PullRequest
1 голос
/ 01 мая 2009

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

Это потому, что событие Window Closing вызывается как при закрытии окна вручную (методом Close), так и когда пользователь нажимает кнопку [X] ... но мне как-то нужно знать только когда пользователь нажимает кнопку [X], а не когда окно закрывается вручную.

Ответы [ 3 ]

2 голосов
/ 01 мая 2009

Я не верю, что есть способ отличить их в WPF (хотя я не уверен).

Способ, которым я всегда обрабатывал это в WinForms, состоял в том, чтобы создать переменную-член "_Closing", установить для нее значение false и метод "ReallyClose ()", который бы установил для _Closing значение true, а затем вызвать Close. Мой обработчик закрытия затем отменял бы закрытие, если _Closing не был установлен в true.

Да, это что-то вроде хака, но это сработало.

0 голосов
/ 25 июля 2016

Попытайтесь поместить кнопку с именем Cancel и переменную bool в вашем классе, поэтому, когда вы нажимаете на кнопку, установите ее в значение true, а в проверке закрытия события, если это правда, используйте e.Cancel = false для выхода из окна. это не работает для меня, и я поступаю таким образом, а также вы можете удалить кнопку X, чтобы иметь кнопки «Принять или отменить», если вы вставили какую-то информацию.

0 голосов
/ 01 мая 2009

Я тоже не думаю, что есть способ отличить их. Вы можете поместить обработчик в событие Application.Exit, но он не различает «закрытие красной кнопки X» и «закрытие alt-F4» (или любые другие типы закрытия, которые вы рассматриваете).

Кстати, если вы проверяете Application.Exit, обязательно проверяйте также и Application.SessionEnding - если кто-то выходит из системы во время работы приложения, вы не можете быть уверены, что Application.Exit будет вызван.

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