Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止其他应用窃取焦点?_C#_.net_Winforms_Windowstate - Fatal编程技术网

C# 如何防止其他应用窃取焦点?

C# 如何防止其他应用窃取焦点?,c#,.net,winforms,windowstate,C#,.net,Winforms,Windowstate,我有一个全屏窗口,最上面的属性设置为true。每当应用程序更改其WindowsState属性时,“我的窗口”将自动最小化,即使它具有活动焦点。例如,下面的代码举例说明了这个问题。窗口停用3秒后,它将从最小化变为正常,从而最小化其他全屏应用程序 // Topmost = false private void Form1_Deactivate(object sender, EventArgs e) { System.Threading.Thread.Sleep(3000); this

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

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

在这种情况下,是否有办法保留全屏窗口的WindowsState属性?我希望用户选择最小化全屏应用程序,因此我希望阻止其他程序窃取焦点

您可能需要进行调查

也许这就是你想要的:


否则,我将支持Henk的建议。

如果这是一个kiosk应用程序,并且您是计算机上运行的唯一程序,那么就可以了。否则,这是一个非常糟糕的想法,这就是为什么没有一个记录在案的方法。 正如Raymund Chen所说,这种问题应该在思维实验之后进行,“如果两个程序都能做到这一点怎么办?”


作为一个用户,我真的不希望应用程序能做到这一点。FWIW.请不要窃取我的注意力:下一个问题将是“即使在一个积极阻止我这样做的窗口中,我如何集中注意力?”你真的想开始一场军备竞赛吗?谢谢你的投入,但我的意图不是要开始一场竞赛。上面的链接解释了用户因失去注意力而产生的烦恼。我还发现有一些方法可以在不窃取他人焦点的情况下显示窗口,因此我认为应用程序不应该有权窃取焦点。你如何区分它们这样做与(比如)Alt+Tab?Ctrl+Esc?任务经理?坦率地说,是其他应用程序行为不端,在没有用户直接操作的情况下更改窗口状态。你的应用程序应该不去管任何事情(IMHO)。