VB.NET MDI Child设置其他子属性

时间:2012-06-09 07:43:39

标签: vb.net mdichild mdiparent

我希望你能帮助我解决问题。 我有一个表单作为父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 提前谢谢......

2 个答案:

答案 0 :(得分:1)

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

最直接的方式是Pass a Reference frmChild02frmChild01。您需要label1公开,以便frmChidl02可以访问它(或者您可以提供公共方法来处理设置。

仅当您在创建frmChild01拥有对frmChild02的引用时才有效。由于您似乎有单独的按钮来启动这些表单,它可能会更复杂。处理此问题的一种方法是使用事件来处理通信。让你的Mdi父母听取/提出儿童表格中的事件。因此,当您单击frmChild01中的按钮时,您的Mdi父级会监听该事件并引发一个名为“ButtonClickInForm1”的新事件或类似的事件。让frmChild02订阅该活动。如果存在frmChild02的实例,它将响应按钮单击并更新其标签。

答案 1 :(得分: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