vb.net从form3调用子例程

时间:2016-09-27 00:48:14

标签: vb.net visual-studio-2013

我有三种形式; Formone Mdi形式,Formtwo非Mdi形式和Formtree,Formtwo的孩子

我希望当Formthree关闭时,在Formtwo中调用一个子程序(RefreshData()),这就是我所拥有但不工作的。感谢

        Dim formone As New MainWindow
        Dim formtwo As New AppFormData
        Dim formthree As New UpdateAppForm
        formtwo.MdiParent = Me.MdiParent
        formtwo.RefreshData()
        Me.DialogResult = Windows.Forms.DialogResult.OK

2 个答案:

答案 0 :(得分:0)

首先,确保将formtwo' s RefreshData()声明为Public,以便可以从不同的表单而不是创建它的表单访问它。

像:

Public Sub RefreshData()
...
End Sub

然后关于在formthree关闭时如何调用它,您可以使用Form_Closing事件。

Private Sub formthree_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     formtwo.RefreshData()
End Sub

答案 1 :(得分:0)

更好的设计将是使用事件。如果您将Formthree作为任何其他形式的子项,则此方法将正常工作,因为它不依赖于此父表单。在Formthree中声明事件并在父类中使用它,即Formtwo

Public Class Formthree

    Public Event CallMethod()

    Private Sub Formthree_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
        RaiseEvent CallMethod()
    End Sub

    .
    .
    .

End Class

Public Class Formtwo

    Private WithEvents frm3 As Formthree

    .
    .
    .

    Private Sub frm3_CallMethod() Handles frm3.CallMethod
        RefreshData()
    End Sub
End Class