2009-03-12 14 views
3

Ich habe eine Seite, auf der ich Variablen ändern muss, die Zeichenfolgen mit Paaren von Werten und Beschriftungen sind. Ich benutzte ein Datagrid-Objekt, aber es ist nicht ausreichend für was benötigt (oder wird schließlich nicht).C# Winforms - Hinzufügen von Formularen zu einem FlowPanel-Steuerelement

So habe ich ein Formular, das eine Textbeschriftung und Textbox und ein Flowpanel ist, und ich versuche, Instanzen des Formulars für jede Variable programmgesteuert zum Flowpanel hinzuzufügen, und ich bekomme nichts. Googeln für die Lösung bringt viele Tutorials mit sich, die das Klicken auf Schaltflächen im UI-Designer und das Ablegen auf Flow-Panels erfordern. Ich möchte dies jedoch programmgesteuert tun.

Was ist der "richtige" oder "Standard" Weg dies zu tun.

+0

Meinst du "Form"? oder meinst du "Kontrolle"? –

+0

Ich meine Form nicht Kontrolle –

Antwort

2

Die Daten (in Paaren) klingt wie es könnte besser passen mit einem TableLayoutPanel, aber die Theorie ist die gleiche; nur .Controls.Add(...) nennen und es sollte funktionieren:

FlowLayoutPanel panel = new FlowLayoutPanel(); 
    Form form = new Form(); 
    panel.Dock = DockStyle.Fill; 
    form.Controls.Add(panel); 

    for (int i = 0; i < 100; i++) 
    { 
     panel.Controls.Add(new TextBox()); 
    } 

    Application.Run(form); 

oder mit einem TableLayoutPanel:

TableLayoutPanel panel = new TableLayoutPanel(); 
    Form form = new Form(); 
    panel.Dock = DockStyle.Fill; 
    panel.ColumnCount = 2; 
    form.Controls.Add(panel); 

    for (int i = 0; i < 100; i++) 
    { 
     panel.Controls.Add(new Label { Text = "label " + i }); 
     panel.Controls.Add(new TextBox { Text = "text " + i }); 
    } 

auch - ich frage mich, ob ein PropertyGrid wäre besser an Ihre Bedürfnisse anzupassen? Dies behandelt alle "Wert erhalten", "Wert anzeigen", "Wert parsen", "Wert speichern" Logik und kann mit Dingen wie ICustomTypeDescriptor, um dynamische Eigenschaften zu ermöglichen.

2

Um Instanzen eines Formulars zu einem Flowlayout Panel hinzufügen, ich folgendes: in meinem Testcode

Form1 f1 = new Form1(); 
f1.TopLevel = false; 
f1.Visible = true; 
flowLayoutPanel1.Controls.add(f1); 

scheint gut zu funktionieren.

+0

Die ursprüngliche Frage wurde nicht gut artikuliert, aber diese Lösungen behoben mein Problem - Meine Form wurde zu einem anderen Steuerelement hinzugefügt, aber nicht angezeigt wurde! Sichtbar = wahr für mich fixiert. –

Verwandte Themen