我想通过单击树视图中的每个节点来生成一个新面板。但这每个新生成的面板都将具有相同的复选框。此外,这些复选框链接到具有选中条件的组框。
我可以通过为每个节点添加一个面板来为 4-5 个节点执行此操作。但我有大约 90 个这样的节点。请参考以下图片, 有 90 个这样的节点。
有没有更简单的方法,如循环等来实现这一点?还是硬方法(为每个节点添加面板并使用显示/隐藏)是唯一的方法?
帮助将不胜感激。
干杯,
您可以为此使用循环。
这是一个示例:
首先,您需要定义一些全局变量:
Dim Panels(100) As Panel
Dim CheckBox1(100) As CheckBox
Dim CheckBox2(100) As CheckBox
Dim CheckBox3(100) As CheckBox
Dim Label1(100) As Label
然后,您应该初始化Form_Load()
事件控件:
For i As Integer = 0 To 100
'Initialize Controls
Panels(i) = New Panel()
CheckBox1(i) = New CheckBox()
CheckBox2(i) = New CheckBox()
CheckBox3(i) = New CheckBox()
Label1(i) = New Label()
'Set properties
CheckBox1.Left = 100
CheckBox2.Left = 100
CheckBox3.Left = 100
CheckBox1.Top = 100
CheckBox2.Top = 200
CheckBox3.Top = 300
Label1.Left = 100
Label1.Top = 50
Label1.Text = "ID : " & NodeNames(i) 'You should replace NodeNames(i) with a variable that you are using for the name of nodes.
'Add Controls to panel
Panels(i).Controls.Add(CheckBox1(i))
Panels(i).Controls.Add(CheckBox2(i))
Panels(i).Controls.Add(CheckBox3(i))
Panels(i).Controls.Add(Label1(i))
'Set visiblity of panel to false
Panels(i).Visible = False
'Add panel to the form.
Me.Controls.Add(Panels(i))
Next
当您需要显示面板时,您应该这样做:
Panels(i).BringToFront()
Panels(i).Visible = True
但是在 RAM 中拥有许多面板并不是一个好主意。我建议您只使用一个面板并通过代码为每个节点进行修改。因为如果你有很多面板和很多控件,你的应用程序可能会使用大量的 RAM。