从另一个表单打开一个表单并获取一个值,然后将其传递回第一个表单

时间:2017-08-04 15:30:16

标签: vb.net

我有两个带有文本框和按钮的表单,我希望第一个表单打开第二个表单。然后我继续在第二个表单的文本框中键入一个值,这样当我单击第二个表单上的按钮时,它必须关闭并将文本框的值传递给第一个表单文本框。

到目前为止,我一直试图这样做而没有运气......

我目前在visual studio 2015中使用vb.net

这是我的代码:

Public Class Form1

    WithEvents fr2 As New Form2

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click
        fr2.Show()
    End Sub

    Private Sub fr2_passvalue() Handles fr2.passvalue
        Me.txtform1.Text = fr2.txtform2.Text
    End Sub

End Class

Public Class Form2

    Event passvalue()

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click
        RaiseEvent passvalue()
        Me.Close()
    End Sub

End Class

我试过直接访问控件但是它不起作用,因为vb.net现在使用类来处理所有事情。我似乎无法弄清楚如何解决这个问题。

2 个答案:

答案 0 :(得分:0)

重新定义事件以传递字符串。然后使用Form2事件将值传递给处理程序。

Public Class Form2

    Public Event passvalue(text As String)

    Private Sub btnpassvalue_Click(sender As Object, e As EventArgs) Handles btnpassvalue.Click
        RaiseEvent passvalue(txtform2.Text)
        Me.Close()
    End Sub

End Class

在Form1中处理它,更新Form1的TextBox。

Public Class Form1

    WithEvents fr2 As Form2

    Private Sub btngetvalue_Click(sender As Object, e As EventArgs) Handles btngetvalue.Click
        fr2 = New Form2()
        fr2.Show()
    End Sub

    Private Sub fr2_passvalue(text As String) Handles fr2.passvalue
        Me.txtform1.Text = text
    End Sub

End Class

如前所述,Form1直接访问Form2上的控件,这违背了事件的目的。

答案 1 :(得分:0)

您可以简单地定义一个全局变量(Public),可以从两种表单中访问它。