VB.NET从子窗体的子(实例)中以父(实例)形式运行子

时间:2014-10-20 11:47:56

标签: vb.net interface parent

我知道这是一个非常讨论的问题,但我没有找到好的答案。 我有一个包含Form1(DataGridView列表)实例的MainForm,它有一个子表单Form2(包含Form1中所选记录的详细信息)。 Form1可以有多个实例(可以加载到不同的独立选项卡中),Form2可以作为独立的表单加载到选项卡中,或者(在这种情况下)作为选定记录的详细信息加载到Form1中。

我可以在选择记录时轻松刷新Form1中的Form2(通过定义"受保护的f2作为新Form2"我可以从Form2运行subs)。但是如何从Form2运行Form1中的子?我用Google搜索:

  1. 获取

    之类的父参考
    Dim theParentForm1 As Form = TryCast(Me.Owner, Form)
    theParentForm1.MyRefreshSub()
    

    ...这是有道理的,因为实例总是配对的。但上面的代码对我来说不起作用,我无法访问" MyRefreshSub()"来自theParentForm1。也许我宣布了一些不正确的事情......

  2. 界面 - 我阅读了很多使用界面的建议,但我没有找到使用界面刷新父表单的单一示例

    < / LI>

    有人能指出我的解决方案吗?

    此致

    Libor的

2 个答案:

答案 0 :(得分:0)

你可以发布@Plutonix发布并将父表单转换为Form1并调用sub

Dim myParentForm As Form1 = TryCast(Me.Owner, Form1)
myParentForm.nameOfSubToRun()

答案 1 :(得分:0)

好的,根据Plutonix提出的建议,我走了另一个方向并决定解决方法 - 更新Form1的所有实例。它的工作原理如下:

    For Each CurrentForm As Form In Application.OpenForms
        If CurrentForm.Name = "Form1" Then
            Dim Form1Instance As Form1 = DirectCast(CurrentForm, Form1)
            Form1Instance.nameOfSubToRun()
        End If
    Next