2017-09-09 4 views
0

Ich versuche, einige Labels und Trackbars in einer GroupBox zu füllen. Ich benutze eine Liste, um die Anzahl von ihnen zu definieren. Aber ich habe Probleme, sie richtig zu platzieren. Dieses Formular wird eine einfache Umfrage über Personal und wenn ich ein Personal aus der ComboBox auswählen, werden Fragen aus einer CSV-Datei gezogen und in einer Liste gespeichert, um in mehreren Teilen des Programms zu verwenden.Wie platziere ich dynamisch erstellte Objekte in einer groupBox?

Hier ist mein aktueller Code:

private void InitializeUI() 
    { 
     pList = Database_IO.ParsePersonelData(); 
     fList = Database_IO.ParseFactorData(); 

     foreach (Personel p in pList) 
     { 
      personelCB.Items.Add(p.personelName + " " + p.personelSurname); 
     } 

     List<Label> labels = new List<Label>(); 
     List<TrackBar> tBars = new List<TrackBar>(); 
     foreach (Factor f in fList) 
     { 
      Label l = new Label 
      { 
       Text = f.factorName 
      }; 
      labels.Add(l); 
      this.Controls.Add(l); 
      l.Parent = evalGroup; 


      TrackBar t = new TrackBar(); 
      tBars.Add(t); 
      this.Controls.Add(t); 
      t.Parent = evalGroup; 
     } 
    } 

Und das ist, was ich zu tun werde versuchen. Dynamisch. Wie kann ich das erreichen?

And this is what i'm trying to do. Dynamically.

Antwort

1

this.Controls.Add(t) fügt trackbar Behälter zu bilden. Sie sollten hinzufügen, es eher zu GROUPBOX Behälter:

evalGroup.Controls.Add(t)

Sie müssen auch sie entsprechend platzieren mit Location Eigenschaft und DockStyle

+0

Ah danke! Wie du sehen kannst, habe ich verzweifelt versucht, diese Kinder von groupBox zu machen (aber schrecklich gescheitert). Aber ich muss immer noch Dock und Ort reparieren. Es gab Grid Layout in Java, gibt es etwas Ähnliches in C#? So kann ich sie leicht platzieren. –

+0

Ich schlage TableLayoutPanel vor, am Anfang ist es ein wenig schwierig, es zu benutzen, aber es gibt die ganze Positionierungskontrolle, die Sie brauchen. –

Verwandte Themen