我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......
f.ShowDialog(Me)
我应该使用f.ShowDialog(mdiparent)
吗?
在调用之前设置所有者有什么区别ShowDialog()
?
我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......
f.ShowDialog(Me)
我应该使用f.ShowDialog(mdiparent)
吗?
在调用之前设置所有者有什么区别ShowDialog()
?
我不确定这是否相关,但我在 ShowDialog 中传递拥有表单时遇到了一些问题,我通常这样做:
f.Owner = Me
f.ShowDialog()
区别在于哪个父级拥有对话框。如果您明确设置父级,则该窗口拥有该对话框。如果您不设置它(使用 ShowDialog 的无参数版本),则应用程序的当前活动窗口拥有该对话框。那是在MSDN上,顺便说一句。
这在通过使用 FormStartPosition.CenterParent 枚举设置 StartPosition 属性来使对话框居中时很有用。
它的确有所作为...
我有一个调用 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 子项。
希望这可以帮助!