You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:20:00