我在一个表单中有一个面板和一个按钮以及2个用户控件,我在面板中动态加载了第一个用户控件,然后在userControl1内部,当我单击表单中的按钮时,我想访问一个方法,然后在面板中将显示的用户控件更改为userControl2,该怎么办?
form1代码:
Public Class form1
Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim control1 = New UserControl1
Panel1.Controls.Add(control1)
control1.Location = New Point(0, 0)
control1.Size = New Point(1351, 533)
End Sub
End Class
UserControl1代码:
Public Class UserControl1
Public Sub doSomething()
'Do something'
End Sub
End Class
答案 0 :(得分:0)
好的,我会尽可能地从您的问题中拿出一个例子,您可以通过许多不同的方式来执行此操作,因此,可能无法100%回答您的问题,但会给您足够的知识你想要的。
我假设您只有一个control1和一个control2。
我的示例将交替显示,并在每次单击主窗体按钮时访问活动的(显示的)用户控件中的子例程。
在模块中,我将放置:
Public control1 As New UserControl1
Public control2 As New UserControl2
在UserControl1中放置:
Public Sub DoSomething()
Me.BackColor = Color.Black
End Sub
在UserControl2中放置:
Public Sub DoSomething()
Me.BackColor = Color.White
End Sub
在您的FormLoad事件中输入:
control1.Location = New Point(0, 0)
control1.Size = New Point(1351, 533)
Panel1.Controls.Add(control1)
在您的Button1单击事件中放置:
Select Case Panel1.Contains(control1)
Case True
'Remove UserControl1 - Add UserControl2
Panel1.Controls.Remove(control1)
control2.Location = New Point(0, 0)
control2.Size = New Point(1351, 533)
Panel1.Controls.Add(control2)
control2.DoSomething()
Case False
'Remove UserControl2 - Add UserControl1
Panel1.Controls.Remove(control2)
control1.Location = New Point(0, 0)
control1.Size = New Point(1351, 533)
Panel1.Controls.Add(control1)
control1.DoSomething()
End Select
上面是检查面板中的哪个UserControl并交替显示它并调用“ DoSomething”。这只是一个例子,可以给您一个想法。您想要的内容可能有所不同,第二个UserControl中可能有一个按钮,如果有,请修改开关代码以适合。