将 .NET winform 置于前面(焦点)Windows 8

Bring .NET winform to front (focus) on Windows 8

我有一个 .NET 4.5 C# winforms 应用程序,当检测到条形码扫描时,它应该会出现在前台(在所有其他 apps/windows 之前)。我正在使用此代码来完成它:

if (this.WindowState == FormWindowState.Minimized)
{
    this.WindowState = FormWindowState.Normal;
}
this.Activate();

这在 Windows 7 上完美运行,但在 Windows 8 上不起作用。如果我的应用程序只是最小化(并且是最近获得焦点的应用程序),它确实可以运行,用这一行:

this.WindowState = FormWindowState.Normal;

但是如果条形码扫描发生时任何其他 window/app 在我的应用程序前面,this.Activate() 显然不适用于 Windows 8.

解决方法是什么?

您需要设置表格的TopMost 属性。

this.TopMost = true;