C # Changer l'emplacement des contrôles à l'intérieur de FlowLayoutPanel
-
15-11-2019 - |
Question
j'utilise flowLayoutPanel
pour avoir des contrôles de localisation relatifs. Je voudrais changer l'emplacement du contrôle à l'intérieur du flowLayoutPanel
. Quand je dis l'emplacement, je ne veux pas dire Control1 avant le contrôle2 ou quelque chose comme ça - je veux dire que si j'ai 2 contrôles, disons label
et comboBox
- la comboBox
La hauteur de 21 ans est de 21, le label
La hauteur de 13 ans est de 13 et le flowLayoutPanel
La hauteur de 21 est également de 21. Je veux mettre le label
au milieu vertical du flowLayoutPanel
- ((21-13) / 2) de haut. Je ne veux pas quelque chose de spécifique pour le milieu vertical Je veux une solution générale.
La solution
Vous pouvez également définir la marge supérieure de l'étiquette (ContainerHeight-LabelHeight) / 2
Autres conseils
La disposition du flux ne va pas aider: elle organise simplement toutes les commandes dans une liste, ajustant leur position pour s'adapter au panneau. Vous pouvez créer des sous-groupes en mettant des commandes dans une table dans la disposition du flux, ou simplement utiliser une table pour un contrôle maximal.
int cIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1);
int bIndex = this.FlowLayoutPanel1.Controls.GetChildIndex(Button1);
this.FlowLayoutPanel1.Controls.SetChildIndex(Button1, bIndex);
this.FlowLayoutPanel1.Controls.SetChildIndex(Button2, cIndex);