【发布时间】:2011-08-22 23:41:08
【问题描述】:
我在 .NET 4.0 Windows 应用程序中有一个 System.Windows.Forms.Form。当我从 Visual Studio 2010 运行应用程序时,表单出现在任务栏中,并且也显示在屏幕上,但位于 Visual Studio IDE 下方。
如果我构建应用程序、发布它、将其安装在另一台 PC 上并运行它,它仍会出现在任何其他窗口下方(例如,我双击可执行文件的 Windows 资源管理器窗口)。
我不希望表单显示为 TopMost,因为这会导致它出现在应用程序之外的所有其他窗口之上,但我确实希望它在启动时出现在所有其他窗口之上,即集中显示。
BringToFront 方法没有影响。有谁知道如何让它工作?
也许相关,但静态 Main() 方法位于单独的程序类中。将静态 Main() 方法移动到表单没有任何影响。该表单未被选为启动对象,因为除非我将静态 Main 方法放在主表单中,否则它不会显示在那里。
请帮忙!
【问题讨论】:
-
你有没有试过在窗体初始化时把焦点放在窗口上,比如this.focus
-
是的,我刚刚在您的回复到达时偶然发现了这一点,Senad。谢谢!但我不知道如何将您的回复标记为答案...
-
其实不行,在构造函数中调用 this.Focus() 不起作用。我完全被难住了......
-
以防万一有人需要知道。为了解决这个问题,我创建了一个 Form.Load 事件处理程序并向它添加了一个 this.Activate() 方法调用。现在我认为它是有道理的,并且可能是所有有经验的 Forms 应用程序开发人员的标准做法...... :)
-
Main() 可能不应该被移动。也许编辑您的帖子以显示 Main() 的代码以及 Form 的构造函数和 Load 事件的代码。您不必与 TopMost 或 Focus 或 BringToFront 等混淆。