当用户点击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秒后显示。
答案 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);
}