Изменение внешнего вида окна Wpf на Window_Closing - PullRequest
2 голосов
/ 27 июля 2011

Когда пользователь нажимает x, чтобы закрыть окно приложения, я хочу открыть сообщение «Завершение работы, пожалуйста, подождите», а затем выделите серый цвет или отключите остальные элементы управления окна.

Это потому, что закрытие и очистка моего приложения занимает некоторое время, около 20 секунд.

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

Это как если бы запрос был поставлен в очередь, но не вызывается, потому что окно закрывается.

Есть ли какой-нибудь способ очистить этот запрос?

Edit:

Попробуйте этот код:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    _DisableBorder.Visibility = System.Windows.Visibility.Visible; 
    Thread.Sleep(2000); 
}

Приложение закроется через 2 секунды, но граница никогда не будет отображаться. Если вы добавите e.Cancel = true, то граница появится через 2 секунды.

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Вы должны сделать трюк. В обработчике «Закрытие» вы должны отменить закрытие, затем показать всплывающее окно (как немодальное окно), а затем отключить все в главном окне. Когда процесс закончится, вы можете программно закрыть как всплывающее, так и главное окна.

Я бы не занимал много времени в обработчике закрытия.

Надеюсь, это поможет. Приветствия

1 голос
/ 26 февраля 2013

Вызов DoEvents из System.Windows.Forms.Application, кажется, добивается цели ..

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
   _DisableBorder.Visibility = System.Windows.Visibility.Visible; 
   System.Windows.Forms.Application.DoEvents();
   Thread.Sleep(2000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...