正在从Form2更改Form1的TextBox文本



这是我的问题
我有一个表单(Form1),它正在调用另一个表单。在这个Form2中,当我关闭Form时,我想调用Form1的方法,以更改Form1组件的值。方法被调用,但Form1的组件值不会改变。。。我想这是因为当我从Form2调用Form1的方法时,它是在Form1实例中创建的,而它不是在我调用Form2的Form1中执行的方法

Form1调用Form2

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click
    frmForm2.ShowDialog()
End Sub

Form2 的Form2调用方法

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
   frmForm1.ChangeValues()
End Sub

Form1的原始实例传递给Form2的构造函数,如下所示:

Public Class Form2 Inherits Form
    Dim theForm1 As Form1
    Public Sub New(form1 As Form1)
        theForm1 = form1
    End Sub
    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click
        ' Call instance of Form1 passed in to change the values here
        theForm1.ChangeValues()
    End Sub
End Class

现在在Form1中,当您创建Form2实例时,您需要传递Form1的实例,如下所示:

Dim frmForm2 As New Form2(Me) 
frmForm2.ShowDialog()

注意:Me是对当前类的引用,在本例中为Form1

如果您没有在ChangeValues()中返回任何值,那么只需在ShowDialog()行之后调用它即可。那么Form2根本不需要知道Form1!。。。

Form1调用Form2,然后更新自身

Private Sub btnCallForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCallForm.Click
    frmForm2.ShowDialog() ' <-- code stops here until frmForm2 is dismissed
    Me.ChangeValues() ' <-- we're already here, update the values!
End Sub

最新更新