我有点晚了,但我遇到了上述相同的症状。我也有一些表格导致了这个问题,而其他表格没有。
我找到了一个解释问题的链接,并将这个概念应用到我的表单中。
http://www.pcreview.co.uk/forums/mdi-child-forms-functionality-does-not-work-correctly-windows-f-t2894221.html
它基本上与确保表单 MdiParent 设置在任何导致创建表单窗口的代码(对 CreateWindow() 或 CreateWindoEX() 的 API 调用)之前设置有关。无论如何,我发现我的一些窗口在构造函数中有导致创建 API 窗口的代码。这方面的一个例子是一个带有 WebBrowser 控件的表单。我将一个 URL 传递到 Constructor 的表单中,然后将它传递给 WebBrowser.Navigate 方法。在这种情况下,我的 MdiChild 窗口不会按预期激活。我更改了构造函数,使其保存了 URL,并覆盖了表单的 CreateHandle 方法,以便尽早在 WebBrowser 中实际设置 URL。表单现在按预期激活。
private string _URL = "";
public frmReportServer(String URL, String Title) : this() {
_URL = URL;
this.Text = Title;
}
protected override void CreateHandle() {
base.CreateHandle();
if (_URL != "") wbReports.Navigate(URL, false);
}
希望这可以帮助...