6

在模式对话框上显示 MessageBox 后 ALT + TAB 不起作用...

我在一个解决方案文件下有三个项目(P1、P2 和 P3)。P1 包含 P1Form.cs,P2 包含 P2Form.cs。

这些文件的详细信息如下:

P1Form.cs 包含一个按钮,它显示来自MessageBox.Show()方法的消息框。P2Form.cs 包含一个按钮,它显示来自MessageBox.Show()方法的消息框。

项目 P3 包含 3 个表单 Form_A、Form_B 和 Form_C。Form_A 是 MDI 容器,有一个按钮可以打开 Form_B 作为其子窗体。Form_B 还有一个按钮,可通过 ShowDialog() 方法将 Form_C 作为模式对话框打开。

Form_C 继承自 P2Form.cs,P2Form.cs 继承自 P1Form.cs。 Form_A.cs 是主窗体,它将是申请的第一个窗体。

重现所需问题的步骤:

  1. 打开作为 MDI 容器的 Form_A
  2. 单击将打开 Form_B 的按钮
  3. 再次单击 Form_B 上的按钮,这将打开 Form_C,它将有两个按钮(两个按钮都来自基类 P1Form.cs 和 P2Form.cs)
  4. 单击 Form_C 的任意按钮,将打开消息框。

问题: 现在通过 Alt + Tab 切换窗口。您将无法在切换窗口上看到当前窗口图标。

我尝试过的替代选项...

  1. 如果我使用Form.show()而不是Form.ShowDialog,那么它工作正常。
  2. 如果我在当前类中编写所有 messageBox 编码而不是在基类中编写,那么它工作正常。

任何人都可以建议我如何在不执行上述两种我已经尝试过的替代方案的情况下解决这个问题?

4

1 回答 1

1

尝试建立从 Form_B(父)到 Form_C(子)的父子关系:

Form_C f = new Form_C();
f.ShowDialog(this);
于 2009-09-10T22:50:28.530 回答