Windows失去焦点

时间:2011-03-09 04:31:43

标签: c# forms setfocus

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

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

我正在使用GradientForm。并显示消息框,我使用MessageBox.Show(“消息文本”,“”,MessageBoxButtons.OK,MessageBoxIcon)。没什么不同。

3 个答案:

答案 0 :(得分:4)

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

确保不要禁用Windows。换句话说,避免这样:

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

将启用设置为true就像为时已晚。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

确保您没有在表单加载事件中显示消息框。因为当时窗口还没有初始化。

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