2

我希望你能帮助我的麻烦。我有 1 个表单作为父 MDI (frmParent.vb) 并有 2 个子表单 (frmChild01.vb & frmChild02.vb)。

父表单的代码如下。

Private Sub OpenChild01ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenChild01ToolStripMenuItem.Click
    Dim child01 As frmChild01

    child01 = New frmChild01()
    child01.MdiParent = Me
    child01.Show()
End Sub

Private Sub OpenChild02ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenChild02ToolStripMenuItem.Click
    Dim child02 As frmChild02

    child02 = New frmChild02()
    child02.MdiParent = Me
    child02.Show()
End Sub

frmChild01 有 button1
frmChild02 有 label1

我的问题是当用户单击 button1 时如何设置 label1.text
提前谢谢...

4

2 回答 2

1

有很多创造性的方法可以做到这一点;但最终您需要在 Child1 和 Child2 之间提供通信渠道。

最直接的方法是 to Pass a Referenceof frmChild02to frmChild01。您需要label1公开frmChidl02才能访问它(或者您可以提供一个公共方法来处理设置。

只有创建时引用了 frmChild02才有效frmChild01。由于您似乎有单独的按钮来启动这些表单,因此可能会更复杂。处理此问题的一种方法是使用事件来处理通信。让您的 Mdi Parent 侦听/引发来自子表单的事件。因此,当您单击按钮时,frmChild01让您的 Mdi 父级监听该事件并引发一个名为“ButtonClickInForm1”或类似的新事件。已frmChild02订阅该事件。如果有一个实例,frmChild02它将响应按钮单击并更新它的标签。

于 2012-06-09T10:01:24.757 回答
0

您需要检查 ChildForm02 是否已加载。如果不是,则需要先加载它,然后才能设置其标签的文本属性。它可能看起来像这样:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    If MDIParent1.ChildForm2 Is Nothing OrElse MDIParent1.ChildForm2.Visible = False Then
        MDIParent1.ChildForm2 = New Form2
        MDIParent1.ChildForm2.MdiParent = MDIParent1
        MDIParent1.ChildForm2.Text = "Window "
        MDIParent1.ChildForm2.Show()
    End If
    MDIParent1.ChildForm2.Label1.Text = "your text here"

End Sub

您还需要在 MdiParent 表单中将子表单声明为 Public,以便您可以在解决方案中的任何位置访问它。

Public ChildForm1 As Form1
Public ChildForm2 As Form2
于 2012-06-11T01:27:43.833 回答