/ / Vytvorte nový panel obsahujúci rovnaké políčka pre každý uzol v stromovom zobrazení VB.NET (obrázky pripojené) - vb.net, treeview, panel

Vytvorte nový panel obsahujúci rovnaké políčka pre každý uzol v stromovom zobrazení VB.NET (Obrázky priložené) - vb.net, treeview, panel

Chcem vytvoriť nový panel s kliknutímkaždý uzol v zobrazení stromu. Ale každý novo vytvorený panel bude mať rovnaké políčka. Okrem toho sú tieto začiarkavacie polia prepojené so skupinami s kontrolovanými stavmi.

Môžem to urobiť pre 4-5 uzlov pridaním panelu pre každý uzol. Mám však okolo 90 takých uzlov. Likvidujte nasledujúce obrázky, Node1 je vybratý a začiarknuté políčko Node2 je vybratý existuje 90 takýchto uzlov.

Existuje nejaký jednoduchší spôsob ako slučka atď., Aby ste to dosiahli? alebo tvrdý spôsob (pridať panel pre každý uzol a použiť show / skryť) je jediný spôsob?

Nápoveda bude naozaj ocenená.

Na zdravie,

odpovede:

-1 pre odpoveď č. 1

Na to môžete použiť slučku.

Toto je ukážka:

Najprv musíte definovať niektoré globálne premenné:

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

Potom by ste mali inicializovať ovládacie prvky Form_Load() udalosť:

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

A keď potrebujete zobraziť panel, mali by ste to urobiť:

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

Ale mať veľa panelov v pamäti RAM nie je tak dobrénápad. Navrhujem, aby ste použili iba jeden panel a upravili ho kódom pre každý uzol. Pretože ak máte vo vnútri viacero panelov a veľa ovládacích prvkov, vaša aplikácia môže používať veľké množstvo pamäte RAM.