在我的应用程序中,当我显示一个消息框并且用户点击其任何按钮(例如“确定”或“取消”)时,我的窗口会失去焦点并被最小化。
我曾尝试使用set focus也使用win32 API SetForegroundWindow(window hWnd)来保持窗口处于活动状态。我注意到如果在我的窗口后面打开了另一个应用程序,我的应用程序窗口在单击消息框按钮后失去了焦点,但是如果它是桌面上唯一可见的窗口,它可以正常工作。我正在使用Windows 7,但我在Win XP中也遇到了同样的问题。
我正在使用GradientForm。并显示消息框,我使用MessageBox.Show(“消息文本”,“”,MessageBoxButtons.OK,MessageBoxIcon)。没什么不同。
答案 0 :(得分:4)
当消息框关闭时没有启用窗口时会发生这种情况。 Windows被迫找到另一个窗口来提供焦点,并将从另一个应用程序中选择一个。还解释了为什么没有其他窗口时这不是问题。
确保不要禁用Windows。换句话说,避免这样:
this.Enabled = false;
MessageBox.Show("oops");
this.Enabled = true;
将启用设置为true就像为时已晚。
答案 1 :(得分:0)
我通过在显示对话框之前使用setForgroundwindow()
激活窗口解决了这个问题,现在每件事都运行正常。
答案 2 :(得分:0)
确保您没有在表单加载事件中显示消息框。因为当时窗口还没有初始化。
而是使用表单的已显示事件。这将解决这个问题