VB.NET中获取调用ShowDialog()的父窗体名称方法咨询
获取调用ShowDialog()的父窗体方法
核心问题原因
用ShowDialog()弹出模态窗体时,若调用时未显式指定Owner,子窗体的Owner属性会为空;而Parent属性仅适用于MDI子窗体场景,对模态对话框无效,所以之前的Me.Parent.Name和未指定Owner的Me.Owner.Name都会返回空值。
正确解决方案
1. 调用子窗体时显式传入Owner
在调用子窗体的ShowDialog()方法时,必须将当前父窗体作为参数传入,这样子窗体的Owner才会正确指向调用它的窗体:
' 示例:在FormA中调用子窗体 Dim childDialog As New YourModalForm() childDialog.ShowDialog(Me) ' Me代表当前的父窗体FormA
2. 在子窗体中获取父窗体信息
此时子窗体中可以通过Owner属性获取父窗体的名称或类型,执行对应逻辑:
- 通过窗体名称判断:
If Me.Owner IsNot Nothing Then Dim callerName As String = Me.Owner.Name Select Case callerName Case "FormA" ' 执行FormA触发的操作 Case "FormB" ' 执行FormB触发的操作 End Select End If
- 通过窗体类型判断(更可靠,避免名称修改导致错误):
If Me.Owner IsNot Nothing Then If TypeOf Me.Owner Is FormA Then ' 执行FormA对应的逻辑 ElseIf TypeOf Me.Owner Is FormB Then ' 执行FormB对应的逻辑 End If End If
内容的提问来源于stack exchange,提问作者GuidoM.
相关产品推荐
相关产品推荐

