-1

我有一个用 VB.net 编写的聊天应用程序,用于在办公室内连接到 LAN 的用户之间聊天。每当用户收到新的聊天消息时,应用程序就会弹出。它在 Windows XP 中运行良好。但有时在 Windows 8 中,应用程序无法弹出聊天窗口。因此,当新消息弹出时,我的聊天窗口不会出现在顶部。

我尝试使用 setwindowspos、form.Show()、form.BringToFront() 可以将表单带到最顶层。但有时这将无法正常工作。除了我使用的这三种方法(我上面提到的)之外,还有其他方法可以使表单弹出并将其带到前面。

4

1 回答 1

2

您的 WinForms 应用程序是桌面应用程序,因此在 Windows 8 中未显示弹出窗口的原因很可能是因为桌面不可见。

请记住,Windows 8 带来了全新的开始屏幕界面并将桌面降级为备用模式。所有桌面应用程序仍在运行,但它们以这种单独的模式运行,并且无法与新的 Metro 应用程序(或他们现在所称的任何应用程序)交互。是的,微软的可用性人员没有听拉里·特斯勒的意见,而是决定改用我们的模式,这太糟糕了,但是c'est la vie

所以无论如何,弹出窗口仍在显示,但它正在显示在桌面上,这是不可见的。将其置于顶部并没有任何好处,因为它已经位于桌面上所有其他窗口的顶部。如果您单击“开始”屏幕中的“桌面”图块,您应该会看到您的窗口。

解决这个问题需要一些工作。从可用性的角度来看,强制将焦点切换到桌面模式是一个可怕的想法,我什至不确定它是否可行。更好的解决方案是考虑使用Toast 通知,这可以从桌面应用程序中完成

于 2013-07-22T07:59:14.013 回答