模态对话框显示MessageBox后ALT + TAB不起作用

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. 打开Form_A,即MDI容器
  2. 单击按钮,它将打开Form_B
  3. 再次单击Form_B上的按钮,它将打开Form_C,Form_C将具有两个按钮(这些按钮都来自基类P1Form.cs和P2Form.cs)
  4. 单击Form_C的任何按钮,它将打开消息框。

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

我尝试使用的替代选项...

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

有人能建议我如何解决这个问题,而不进行上述已经尝试过的两个替代方案吗?


1
你的帖子标记很好,这对新用户来说非常友好。赞! - Natrium
1个回答

1
尝试从Form_B(父级)到Form_C(子级)建立父子关系:
Form_C f = new Form_C();
f.ShowDialog(this);

忘记添加 MSDN 链接了: http://msdn.microsoft.com/en-us/library/aa984358(VS.71).aspx#Mtps_DropDownFilterText - alexm
你不能编辑自己的帖子吗?无论如何,我还是给你点赞了。这就是我会给出的答案。 - jpbochi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接