【发布时间】:2009-01-28 20:48:44
【问题描述】:
我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......
f.ShowDialog(Me)
我应该使用f.ShowDialog(mdiparent)吗?
在调用ShowDialog()之前设置所有者有什么区别?
【问题讨论】:
标签: .net winforms mdi showdialog
我有一个需要显示对话框的 MDIChild 表单。我目前正在从 mdichild 表单中这样做......
f.ShowDialog(Me)
我应该使用f.ShowDialog(mdiparent)吗?
在调用ShowDialog()之前设置所有者有什么区别?
【问题讨论】:
标签: .net winforms mdi 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 子项。
希望这会有所帮助!
【讨论】: