我希望你能帮助我解决问题。 我有一个表单作为父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 提前谢谢......
答案 0 :(得分:1)
有很多创造性的方法可以做到这一点;但最终你需要在Child1和Child2之间提供一个沟通渠道。
最直接的方式是Pass a Reference
frmChild02
到frmChild01
。您需要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