Можем ли мы знать, закрыто ли окно пользователем или кодом в WPF? - PullRequest
1 голос
/ 21 ноября 2011

У меня есть элемент управления окном, который я показываю в моем приложении. Иногда окно закрывается пользователем (нажав на кнопку «X»), а иногда автоматически по коду.

Я слушаю событие Closed (также пробовал с Closing) и хотел бы знать, в каком случае я (пользователь или код) Это возможно?

(мне известен этот вопрос, но он действительно не имеет удовлетворительного ответа)

EDIT:

Я ищу простое решение или какой-то способ узнать, откуда произошло событие. Я знаю, что могу реализовать эту функцию самостоятельно, как предложил Sandeep Bansal.

Ответы [ 2 ]

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

Вариант 1: Определите новый тип

 public class CodeClosingEventArgs : EventArgs
 { 
  // Fill any custom data you want
 }

А затем вызовите OnClosed(new CodeClosingEventArgs()); явным образом в своем коде и проверьте тип события, если оно является «обычным» аргументом события, то есть пользователь, нажав «X».

Вариант 2:

используйте пользовательский метод, который закрывает вашу форму.

 public void MyClosingFormMethod()
 {
    base.OnClosed(null); 
 }
2 голосов
/ 21 ноября 2011

Почему бы не создать логическое значение, а затем установить его, если происходит определенное действие?

bool closedByUser = false;

и затем, когда код предназначен для закрытия формы, просто добавьте closedByUser = false; и closedByUser = true;, если действие является производным от пользователя.

...