2010-05-07 7 views
3

J'essaie d'obtenir une mise en page autosizing très simple sur un winform (C# .NET). J'ai essayé TableLayoutPanels et FlowLayoutPanels mais rien ne fonctionne.Le panneau Flowlayout et les contrôles enfants auto-dimensionnables ne fonctionnent pas

J'ai un usercontrol qui est un conteneur pour d'autres contrôles utilisateur qui sont créés à l'exécution - je l'ai appelé StackPanel comme je le veux pour lister verticalement les contrôles enfants. J'ai essayé cela en utilisant un FlowLayoutPanel, un TableLayoutPanel et un Panel (avec chaque contrôle ancré en haut).

Le usercontrol enfant se compose d'une étiquette et un certain nombre de boutons radio (ou tout autre contrôle standard - il n'a pas d'importance).

Lorsque les contrôles enfants sont créés, le texte de l'étiquette est définie (si cela est le temps qu'il a besoin d'envelopper une nouvelle ligne) et les boutons radio sont ajoutés.

Il ne semble pas y avoir de combinaison d'ancrage/autosizing ou de réglage manuel de la taille en utilisant les événements Redimensionner qui peuvent tout afficher sans écrêtage et redimensionner avec le formulaire.

Merci!

Répondre

2

J'ai eu une expérience similaire avec les deux panneaux.

FlowLayoutPanel:

Vous avez essentiellement à laisser vos widgets enfants ancrés en haut à gauche. Ne les ancrez pas. Ne les ancrez pas non plus à droite. Le dimensionnement automatique des étiquettes ne fonctionnera que dans cette configuration.

Ensuite, vous pouvez capturer l'événement resize du FlowLayoutPanel et régler manuellement toutes les largeurs de vos composants enfants.

+1

La définition d'un gestionnaire d'événements est-elle vraiment le seul moyen de le faire? – RyPope

Questions connexes