代码之家  ›  专栏  ›  技术社区  ›  dotjoe

如何从MDichild窗体内部正确显示dialog()?

  •  3
  • dotjoe  · 技术社区  · 15 年前

    我有一个需要显示对话框的MDichild窗体。我现在在MDichild表单中这样做…

    f.ShowDialog(Me)
    

    我应该用吗 f.ShowDialog(mdiparent) ?

    呼叫前设置所有者有什么不同 ShowDialog() ?

    3 回复  |  直到 15 年前
        1
  •  3
  •   Chris Holmes    15 年前

    不同之处在于父级拥有对话框。如果显式设置父级,则该窗口拥有该对话框。如果不设置它(使用ShowDialog的无参数版本),则应用程序的当前活动窗口拥有该对话框。这是关于 MSDN ,BTW.

    其中,通过使用FormStartPosition.CenterParent枚举设置StartPosition属性,可以使对话框居中。

        2
  •  4
  •   Joey    15 年前

    我不确定这是否相关,但在ShowDialog中传递所属表单时遇到了一些问题,我通常这样做:

    f.Owner = Me
    f.ShowDialog()
    
        3
  •  0
  •   Molasar    9 年前

    这确实有区别…

    我有一个调用ShowDialog(Me)的MDI子级,在生成的对话框窗口中,Me.Owner引用MDI容器,而不是MDI子级。

    使用me.owner.activecontrol是一种解决方法,但使用:

           Dim ContractForm As New Contract(strType, intMode)
           ContractForm.Owner = Me
           dgrAction = ContractForm.ShowDialog()
    

    很好。在结果对话框窗口中,me.owner现在引用MDI子级。

    希望这有帮助!