Question

Un peu en arrière, j'ai posté cette question d'essayer d'obtenir un FlowLayoutPanel à autoSize correctement lorsqu'il est connecté au-dessus d'un récipient. Ce que je voulais accomplir était d'installer une ligne horizontale (de gauche à droite-) FlowLayoutPanel enjambant le bord supérieur d'une forme et un datagridview prendre le reste de l'espace disponible en dessous de la FlowLayoutPanel. J'avais du mal à obtenir la propriété de la hauteur du FlowLayoutPanel à autoSize comme il le devrait. La réponse affichée a parfaitement fonctionné pour ce que je voulais accomplir, ce qui était super ...

Impossible de laisser assez seul, je suis en train maintenant d'aller un peu plus loin et envelopper le FlowLayoutPanel dans un UserControl. Je l'ai découvert, cependant, que faire cela provoque l'FlowLayoutPanel de ne plus redimensionner sa hauteur correctement.

Voici la première mise en page, qui fonctionne à merveille:

FlowLayoutPanel1 (Autosize = true, Dock = Top)
  ComboBox1
  ComboBox2
  ComboBox3
DataGridView1 (Dock = Fill)

Et ici il est avec FlowLayoutPanel enveloppé dans un UserControl:

UserControl (Autosize = true, Dock = Top)
  FlowLayoutPanel1 (Autosizse = true, Dock = Fill)
    ComboBox1
    ComboBox2
    ComboBox3
DataGridView1 (Dock = Fill)

Pour une raison quelconque, FlowLayoutPanel ne redimensionne pas correctement sa hauteur lorsque le formulaire est redimensionné. Ceci est assez facile à reproduire. Oh aussi, le contenu du FlowLayoutPanel peut être quelque chose, non seulement ComboBoxes.

Était-ce utile?

La solution

Je pense que le problème est que vous avez la FlowLayoutPanel1.Dock = Fill qui l'emporte, il est tentative de autoSize sa hauteur.

Le correctif est probablement à mettre FlowLayoutPanel1.Dock = Top (comme vous l'aviez avant), puis gérer l'événement FlowLayoutPanel1.Resize pour redimensionner votre contrôle utilisateur. Essentiellement, vous essayez manuellement pour garder le UserControl.Size en phase avec le FlowLayoutPanel1.Size.

Il pourrait y avoir une façon plus intelligente de le faire, mais nous espérons qu'il vous obtiendrez sur la bonne voie ...

Autres conseils

Votre UserControl a une largeur réglée? Regardez dans les designer.cs pour être sûr. Le cas échéant, vous devrez réinitialiser cette propriété.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top