Question

Je travaille sur un UserControl qui se compose d'une bande de ComboBoxes disposés horizontalement à travers la partie supérieure de la commande dans un FlowLayoutPanel, et un datagridview directement en dessous de la FlowLayoutPanel qui occupe tout l'espace restant sur le contrôle. Je dois être en mesure de cacher tous les menus déroulants facilement, donc j'ai SplitContainer avec orientation == Horizontal, avec le FlowLayoutPanel dans SplitContainer.Panel1 et le datagridview dans SplitContainer.Panel2.

La hiérarchie de contrôle est la suivante:

SplitContainer1
    SplitContainer1.Panel1
        FlowLayoutPanel1
            ComboBox1
            ComboBox2
            ComboBox3
    SplitContainer1.Panel2
        DataGridView1

Étant donné que le FlowLayoutPanel est orienté horizontalement et l'espace horizontal est limité, la propriété WrapContents du FlowLayoutPanel est vrai, de sorte que les menus déroulants enveloppent vers le bas à la ligne suivante lorsque la commande est faite trop étroite pour toutes les listes déroulantes dans une rangée.

Le problème que je vais avoir est que lorsque l'enveloppe FlowLayoutPanel son contenu vers le bas sur la ligne suivante, sa propriété en hauteur ne change pas en conséquence. Les lignes enveloppées du FlowLayoutPanel sont tronquées, et ne forcent pas le panneau SplitContainer de croître en conséquence en hauteur. J'ai essayé de gérer l'événement FlowLayoutPanel.Resize à croître et à réduire la propriété SPlitContainer.SplitterDistance pour accueillir le contenu enveloppé, mais la propriété FlowLayoutPanel.Height ne change pas lorsque le contenu sont enveloppés. Je suis perplexe. le FlowLayoutPanel est brisé? Comment puis-je redimensionner le conteneur parent du FlowLayoutPanel si FlowLayoutPanel.Height reste toujours le même, quel que soit l'emballage contenu?

Merci

Était-ce utile?

La solution

Il semble que vous faites cela un peu trop compliqué pour ce dont vous avez besoin. Vous pouvez utiliser l'amarrage intégré pour accomplir ce que vous voulez sans utiliser le SplitContainer. Configurez votre formulaire comme ceci:

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

Ensuite, lorsque vous voulez masquer FlowLayoutPanel1 vous pouvez simplement basculer la propriété Visible pour cacher / montrer.

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