如何防止其他应用程序窃取焦点?

我有一个全屏窗口,其中Topmost属性设置为true。 每当应用程序更改其WindowState属性时,即使它具有活动焦点,我的窗口也会自动最小化。 例如,下面的代码举例说明了这个问题。 窗口停用3秒后,窗口将从最小化更改为正常,从而最小化其他全屏应用程序。

// Topmost = false private void Form1_Deactivate(object sender, EventArgs e) { System.Threading.Thread.Sleep(3000); this.WindowState = FormWindowState.Normal; } 

在这种情况下,有没有办法保留全屏窗口的WindowState属性? 我希望用户选择最小化全屏应用,所以我想阻止其他程序窃取焦点。

您可能想要调查“Kiosk模式” 。

如果这是一个自助服务终端应用程序,你是计算机上运行的唯一程序,那么很好。 否则这是一个非常糟糕的主意,这就是为什么没有记录的方式来做到这一点。 正如Raymund Chen所说的那样,这个问题应该遵循思想实验“如果有两个程序这样做会怎么样?”:

http://blogs.msdn.com/oldnewthing/archive/2005/06/07/426294.aspx

也许这就是你想要的: 全屏“Kiosk模式”中的Windows窗体 。

否则我将是Henk的第二次推荐。