3

我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......

f.ShowDialog(Me)

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

在调用之前设置所有者有什么区别ShowDialog()

4

3 回答 3

4

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

f.Owner = Me
f.ShowDialog()
于 2009-01-28T22:29:37.977 回答
3

区别在于哪个父级拥有对话框。如果您明确设置父级,则该窗口拥有该对话框。如果您不设置它(使用 ShowDialog 的无参数版本),则应用程序的当前活动窗口拥有该对话框。那是在MSDN上,顺便说一句。

这在通过使用 FormStartPosition.CenterParent 枚举设置 StartPosition 属性来使对话框居中时很有用。

于 2009-02-11T15:22:16.840 回答
0

它的确有所作为...

我有一个调用 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 子项。

希望这可以帮助!

于 2015-09-10T16:13:55.887 回答