【发布时间】:2015-02-10 18:35:36
【问题描述】:
我有一个 .NET 4.5 C# winforms 应用程序,当检测到条形码扫描时,它应该出现在前台(在所有其他应用程序/窗口的前面)。我正在使用此代码来完成它:
if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
}
this.Activate();
这在 Windows 7 上完美运行,但在 Windows 8 上不起作用。如果我的应用程序只是最小化(并且是最近获得焦点的应用程序),它确实可以工作,这行:
this.WindowState = FormWindowState.Normal;
但是,当条形码扫描发生时,如果任何其他窗口/应用在我的应用前面,this.Activate() 显然在 Windows 8 上不起作用。
解决办法是什么?
【问题讨论】:
-
你需要调用
BringToFront()方法..所以this.BringToFront应该处理它。 -
不,是Activate()。这通常可能不会成功,进程无法将窗口推向用户的脸。 Windows 8 中的规则没有什么不同,许多版本都相同。您可能使用不同的 UI。有一种隐秘的作弊方式,就是.NET Framework中的actually included。