Er der nogen der kan fortælle mig lidt om Forms.Controls, Panel.Controls mm. Har et Form object en liste af controls og hvad er det for en liste type?
Jeg kan jo sætte controls ind på listen, men arbejder man normalt med to lister i forbindelse med at holde styr på hvad der er på listen hvis ens controls indgår som variabel i en anden klasse (nok lidt kryptisk skrevet).
Controls er en liste af kontroller. Den kan altså indeholde Button’s, TextBox’e, GridView’s, osv. Nogle kontroller kan i sig selv indeholde andre kontroller – det gælder f.eks. for Panel og den type kontroller.
En Form har en Controls liste og denne indeholder de kontroller du indsætter i formen. Hvis du drag’n’dropper kontrollerne ind på formen fra Toolbox-panelet i venstre side, sker dette i baggrunden: Hvis du kigger på den kode som VS selv laver, kan du se at kontrollerne oprettes og at de så efterfølgende Add()’es til controls.
Der er ingen som helst til hindre for at du selv kunne gøre dette i stedet for at overlade det til VS.
Når du opretter en Panel på dis side bliver selve panelet indsat i Form’ens Controls-liste. Når du indsætter nye kontroller på formen og placere dem inden i Panel’et så vil de ikke blive Add()’et til Form’ens Controls, men derimod til Panel’ets.
Du kan endda have andre Panel’er inde i dit Panel. PÅ denne måde kan du ende med en rimelig dub træstruktur af kontroller.
Hvis du f.eks. indsætter to Textbox’e i din Form, Så et Panel, hvori du indsætter to nye Textbox’e. Så endnu et Panel og to Textbox’e; Det kunne se sådan ud (eksemplet skal nok lige pastes til Notepad for at du kan se detaljerne)
Jeg vil gerne kunne sortere mine Panel.Controls med brug af IComparable, men jeg har ikke adgang til Sort() på et Panel.Controls som jeg f.eks. har på en ArrayList. Kan man sortere Panel.Controls?
Jo, men hvad mener du med at de sorteres? Hvad skal effekten være ... de vil jo f.eks. ikke blive flyttet på formen eller noget i den stil af at optræde i en anden rækkefølge i Controls.
Jeg vil gerne sortere Controls listen så jeg kan benytte en foreach() til at sætte forskellige controls ind på et TableLayoutPanel baseret på deres index. Jeg ønsker ikke at have en ekstra list f.eks. en ArrayList som jeg sorterer.
Det kræver dog en hel masse ekstra kode, og der er næppe vundet noget i den sidste ende; Et ekstra array med de sortede værdier vil stadig pege mod de samme kontroller og vil derfor kun fylde for selve pointerene.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.