2009-03-12 6 views
3

J'ai une page où je dois modifier des variables qui sont des chaînes avec des paires de valeurs et d'étiquettes. J'utilisais un objet dataagrid mais ce n'est pas suffisant pour ce qui est requis (ou ne le sera finalement pas). J'ai donc une forme qui est une étiquette de texte et une zone de texte, et un flowpanel, et j'essaye d'ajouter par programme des instances de cette forme pour chaque variable au flowpanel, et je n'obtiens rien. Googling pour la solution apporter beaucoup de tutoriels vidéo impliquant cliquant sur les boutons dans le concepteur de l'interface utilisateur et les déposer sur les panneaux de flux, je veux faire cela par programme cependant.Winforms C# - Ajout de formulaires à un contrôle FlowPanel

Quelle est la manière «correcte» ou «standard» de le faire.

+0

Voulez-vous dire "formulaire"? ou voulez-vous dire "contrôle"? –

+0

Je veux dire la forme pas de contrôle –

Répondre

2

Les données (par paires) semblent être mieux adaptées à un TableLayoutPanel, mais la théorie est la même; il suffit d'appeler .Controls.Add(...) et cela devrait fonctionner:

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); 

ou avec un 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 }); 
    } 

aussi - Je me demande si un PropertyGrid cadrerait mieux à vos besoins? Cela gérera toutes les valeurs "get value", "show value", "parse value", "value value", et peut être branché avec des choses comme ICustomTypeDescriptor pour permettre des propriétés dynamiques.

2

Pour ajouter des instances d'un formulaire à un panneau FlowLayout, je fais ce qui suit:

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

Cela semble ok dans mon code de test.

+0

La question originale n'a pas été bien articulée, mais cette solution a résolu mon problème - Mon formulaire a été ajouté à un autre contrôle, mais ne se présentait pas! Visible = vrai fixé pour moi. –

Questions connexes