2

在我的应用程序中,当我显示一个消息框并且用户单击其任何按钮(例如确定或取消)时,我的窗口将失去焦点并最小化。

我曾尝试使用 set focus 也使用 win32 API SetForegroundWindow(window hWnd) 来保持窗口处于活动状态。我注意到如果在我的窗口后面打开了另一个应用程序,我的应用程序窗口在单击消息框按钮后失去焦点,但如果它是桌面上唯一可见的窗口,它可以正常工作。我正在使用 Windows 7,但我在 Win XP 中也面临同样的问题。

我正在使用 GradientForm。为了显示消息框,我使用 MessageBox.Show("Message Text", "", MessageBoxButtons.OK,MessageBoxIcon)。没什么不同。

4

3 回答 3

5

当消息框关闭时没有启用的窗口时,就会发生这种情况。Windows 被迫寻找另一个窗口来获得焦点,并将从另一个应用程序中选择一个。还解释了为什么在没有其他窗口时这不是问题。

确保你没有禁用你的窗口。换句话说,避免这种情况:

   this.Enabled = false;
   MessageBox.Show("oops");
   this.Enabled = true;

像这样将 Enabled 设置回 true 为时已晚。

于 2011-03-09T05:11:26.470 回答
0

我通过在显示对话框之前使用激活窗口解决了这个问题,setForgroundwindow()现在一切正常。

于 2011-03-12T05:53:25.863 回答
0

确保您没有在表单加载事件中显示消息框。因为那个时候,window还没有初始化。

而是使用表单的 Shown 事件。这将解决这个问题

于 2017-03-24T04:18:20.243 回答