MDI子窗口无法显示.ShowDialog()为什么?

时间:2010-07-12 09:36:28

标签: c# mdi

我使用winforms MDI窗口并在其上显示子窗口。 我需要使用模态对话框模式(.ShowDialog())显示其中一些,但仍然将它们显示为子窗口(它们应保持在父窗口的边框内)。

当我尝试这样做时,我收到编译时错误,指出子窗口无法显示为模态对话框模式窗口。

有什么办法吗?

3 个答案:

答案 0 :(得分:0)

我认为没有直接的方法可以做到这一点。但是,在低级别模式对话框是通过禁用父窗口来实现的。尝试显示无模式MDI子项并保持父项禁用,除非此子项已关闭。

答案 1 :(得分:0)

我通常会通过使子窗体上的所有控件都成为用户控件的一部分然后将用户控件添加到子窗体并创建一个包含用户控件的单独对话框来解决这个问题。这意味着您可以重用几乎所有代码,并且通常会有一些代码不同(子代码通常没有“确定/取消”按钮等)。

但是,如果您不想沿着这条路走下去,那么这是一个代码项目文章,据说有一个解决方法(我没仔细看过):MDI child as dialog form (MDI modal workaround)

答案 2 :(得分:0)

如果您希望模态窗口只是在父窗体的边界内打开,只需将窗体属性StartPosition设置为CenterParent