当ShowInTaskbar为false并且显示自动关闭时,窗口不显示

时间:2010-10-11 20:37:19

标签: wpf

我在Windows Vista Vista上遇到了关于WPF窗口的问题。

我创建了一个包含以下属性的窗口:

WindowStyle="None" 
ShowInTaskbar="False" 
ResizeMode="NoResize" 
Background="Transparent"

ShowInTaskbar设置为false,这意味着窗口不会显示任务栏按钮,但您可以使用Alt + tab在taskbarlist中看到它

在我的应用程序中,当收到一些事件时,将创建窗口并显示Show(),例如

window1 wd = new windw1();
wd.topmost = true;
wd.show();

我碰巧在以下情况中发现窗口没有正确显示

电源管理器中的我的显示设置设置为在1分钟内关闭显示,

1分钟后,我的显示屏关闭,之后有一个事件触发了窗口显示,但是在我移动鼠标以显示窗口后,我没有看到窗口显示,相反,当我使用Alt + Tab时,我可以在taskbarlist中找到一个透明的窗口,带有我的应用程序图标。这很奇怪。点击“显示桌面”两次后,窗口显示自己。

我在互联网上搜索,发现似乎当showtaskbar设置为false时,会创建另一个透明窗口,它是当前窗口的所有者,这解释了为什么我可以在taskbarlist中看到透明窗口使用Alt + Tab键。我认为在这种情况下窗口没有正确绘制。

我认为这是WPF的一个错误,有什么解决方法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以让您的应用程序获得电源感知并使其检查显示器的状态。请参阅http://msdn.microsoft.com/en-us/library/ms703398%28VS.85%29.aspx。 然后,您可以订阅Powerbroadcast,并在重新打开显示器时获得通知。 在该事件中,您可以强制您的应用程序重绘相关窗口。

可悲的是,这只是一种解决方法,并没有解决最初的问题