/ / Generar un nuevo panel que contenga las mismas casillas de verificación para cada nodo en la vista de árbol VB.NET (Imágenes adjuntas) - vb.net, vista de árbol, panel

Genere un nuevo panel que contenga las mismas casillas de verificación para cada nodo en la vista de árbol VB.NET (Imágenes adjuntas) - vb.net, vista de árbol, panel

Quiero generar un nuevo panel con un clic enCada nodo en una vista de árbol. Pero este panel recién generado tendrá las mismas casillas de verificación. Además, estas casillas de verificación están vinculadas a cuadros de grupo con una condición marcada.

Puedo hacer esto para 4-5 nodos agregando un panel para cada nodo. Pero tengo alrededor de 90 tales nodos. Por favor consulte las siguientes imágenes, Se selecciona el nodo1 y se hace clic en la casilla de verificación Nodo2 está seleccionado hay 90 tales nodos.

¿Hay alguna forma más fácil como bucle, etc. para lograr esto? ¿O la manera difícil (agregar panel para cada nodo y usar mostrar / ocultar) es la única forma?

La ayuda será realmente apreciada.

Aclamaciones,

Respuestas

-1 para la respuesta № 1

Puedes usar un bucle para esto.

Esta es una muestra:

Primero, necesitas definir algunas variables globales:

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

Luego, debe inicializar los controles en Form_Load() evento:

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

Y cuando necesite mostrar un panel, debe hacer esto:

Panels(i).BringToFront()
Panels(i).Visible = True

Pero tener muchos paneles en la memoria RAM no es tan buenoidea. Le sugiero que use solo un panel y lo modifique por código para cada nodo. Porque si tiene muchos paneles y muchos controles dentro, su aplicación puede utilizar una gran cantidad de RAM.