【问题标题】:Changing TextBox Text of Form1 From Form2从 Form2 更改 Form1 的 TextBox 文本
【发布时间】:2013-12-11 11:11:48
【问题描述】:

这是我的问题...
我有一个表单(Form1),它正在调用另一个表单(Form2)。在这个 Form2 中,当我关闭 Form 时,我想调用 Form1 的一个方法来更改 Form1 组件的值。该方法被调用,但Form1的组件值没有改变......我猜这是因为当我从Form2调用Form1的方法时,它创建了另一个Form1实例,并且它没有在Form1中执行的方法从哪个我打电话给 Form2

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

【问题讨论】:

    标签: vb.net forms showdialog


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

      如果您没有在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        相关资源
        最近更新 更多