2009-12-28 10 views
3

Je travaille sur un UserControl qui consiste en un tas de ComboBoxes disposées horizontalement dans le haut du contrôle dans un flowlayoutpanel, et un datagridview directement sous le flowlayoutpanel qui occupe tout l'espace restant sur le contrôle . Je dois être capable de cacher facilement toutes les listes déroulantes, donc j'ai un SplitContainer avec Orientation == Horizontal, avec le flowlayoutpanel dans SplitContainer.Panel1, et le datagridview dans SplitContainer.Panel2.FlowLayoutPanel Taille AutoSize ne fonctionne pas

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

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

Depuis l'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 rendu trop étroit pour s'adapter à toutes les listes déroulantes dans une rangée.

Le problème que je rencontre est que lorsque le panneau de configuration de flux enveloppe son contenu sur la ligne suivante, sa propriété de hauteur ne change pas en conséquence. Les rangées encapsulées du panneau de configuration de flux sont tronquées et ne forcent pas le panneau de conteneur de division à augmenter en hauteur en conséquence. J'ai essayé de gérer l'événement FlowLayoutPanel.Resize pour développer et réduire la propriété SPlitContainer.SplitterDistance pour accueillir le contenu encapsulé, mais la propriété FlowLayoutPanel.Height ne change pas lorsque le contenu est encapsulé. Je suis perplexe. Le FlowLayoutPanel est-il cassé? Comment puis-je redimensionner le conteneur parent de FlowLayoutPanel si FlowLayoutPanel.Height reste toujours le même, quel que soit le contenu du contenu?

Merci

Répondre

3

Il semble que vous faites cela un peu trop compliqué pour ce dont vous avez besoin. Vous pouvez utiliser la station d'accueil intégrée 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) 

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

+1

Brillant! Cela a fonctionné parfaitement! – echo