如何在 VB.NET 两种形式都处于活动状态时以另一种形式更新标签中的文本(消息传递)[Visual Studio 2010]

How to update text in the label in another form in VB.NET when both form are active (Message Passing) [Visual Studio 2010]

我创建了两个表单,即 Form1 和 Form2。 Form1 由一个标签和一个显示 Form2 的按钮组成。现在 Form2 包含一个文本框和一个按钮。单击 Form2 中的按钮时,文本框中的内容应显示到 Form1 中的标签。只要用户愿意,就可以重复此操作。 到目前为止,我可以将数据传递给未打开的表单。但是当两个表格都处于活动状态时,我无法更新数据。

在Form1中,我声明了一个全局字符串

Public Property message As String

Form2中的按钮点击事件如下

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim obj As New Form1
    obj.message = TextBox1.Text
End Sub

连我都试过了

obj.label1.Text = TextBox1.Text

但是这些都没有成功。 请帮助实现目标。 请记住,我想使用两个普通表单而不是任何特殊类型的表单(如 MDI)来实现此目的。

您可以通过 Show() 方法将对 Form1 的引用传递给 Form2。可以使用 .Owner 属性.

在 Form2 中检索此引用

在表格 1 中:

Dim f2 As New Form2()
f2.Show(Me) ' <-- passing reference to Form1 into Form2

在表格 2 中:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim f1 As Form1 = DirectCast(Me.Owner, Form1)
    f1.message = TextBox1.Text
End Sub