在Window_Closing上更改Wpf窗口外观

时间:2011-07-27 14:54:17

标签: c# wpf window

当用户点击x关闭应用程序窗口时,我想弹出一条消息“正在关闭,请等待”并灰显或禁用其余的窗口控件。

这是因为我的应用程序关闭和清理需要一段时间,大约20秒。

但是,Window_Closing事件处理程序中的wpf命令似乎永远不会做任何事情。我有一个透明的灰色填充边框覆盖窗口控件,我想将可见性从折叠更改为可见。代码被调用但没有任何变化。

就好像请求已排队但由于窗口正在关闭而未被调用。

有没有办法将此请求刷新?

编辑:

试试这段代码:

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 个答案:

答案 0 :(得分:2)

你应该制作一个技巧。 在“Closing”处理程序中,您应该取消关闭,然后显示弹出窗口(作为无模式窗口),然后禁用主窗口上的所有内容。当该过程结束时,您可以以编程方式关闭弹出窗口和主窗口。

我不会在结算处理程序中执行任何耗时的操作。

希望它有所帮助。 干杯

答案 1 :(得分:1)

从System.Windows.Forms.Application调用DoEvent似乎可以解决问题..

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