2009-09-17 6 views
3

J'ai une boîte de dialogue avec la colonne sur le côté droit rempli de boutons. La boîte de dialogue est construite avec Windows Forms. J'ai un mockup au lien suivant: original dialog (je l'ai inclus mais apparemment je ne suis pas autorisé à utiliser des balises d'image)Les commandes d'étalement pour remplir l'espace comme une boîte de dialogue se redimensionne

Je voudrais que les boutons dans la colonne de droite de se redimensionner pour remplir le reste espace vertical lorsque la boîte de dialogue est redimensionnée. Il ne m'importe pas particulièrement si les boutons augmentent simplement en taille ou si les boutons restent de la même taille pendant que les écarts entre eux augmentent. Je veux simplement que les boutons passent du haut vers le bas. (J'ai une maquette pour ceci aussi mais apparemment je peux seulement inclure un lien)

J'ai essayé d'héberger les boutons dans un FlowLayoutPanel mais ils n'augmentent pas quand la boîte de dialogue s'étire, je n'obtiens que des espaces en bas après Je n'ai plus de boutons. J'ai aussi essayé un TableLayoutPanel et j'ai eu le même résultat mais je l'ai peut-être mal utilisé. Est-ce que quelqu'un a des idées comment je pourrais accomplir cela?

Merci à l'avance, Jeremy

Répondre

3

Pour vous aider à démarrer. Utilisez le TableLayoutPanel, définissez sa propriété Anchor en haut, en bas, à gauche et à droite. Définissez les lignes et les colonnes en pourcentages si nécessaire. Je suggère que chaque contrôle ait sa propre cellule. Notez que chaque contrôle dans une "cellule" peut avoir sa propriété Dock and Anchor définie comme nécessaire.

+0

Merci pour l'info, cela a fonctionné parfaitement. Un gotcha, cependant, ... je ne pouvais pas obtenir le TableLayoutPanel pour définir simultanément la propriété Anchor aux quatre points et le style Dock à Fill. La définition de l'un réinitialise toujours l'autre, mais cela peut avoir été un effet secondaire du toolkit de contrôle tiers qui hébergeait TableLayoutPanel. Peu importe, quand je définis le style Dock du TableLayoutPanel ainsi que ses contrôles enfants pour remplir les contrôles étirés parfaitement à travers le formulaire. Merci encore! –

+1

Oui, Ancre et Dock sont exclusifs. Vous ne pouvez définir que l'un ou l'autre. Si vous voulez les deux, utilisez un panneau pour "ancrer" puis "ancrer" votre contrôle dans le panneau. – AMissico

0

Vous pouvez le faire avec un TableLayoutPanel. Créez une colonne pour les boutons, chaque bouton ayant sa propre ligne/cellule dans la colonne. Définissez chaque ligne comme un pourcentage pair pour la hauteur (s'il y a 10 boutons, chaque ligne sera de 10%), et ancrez le TableLayoutPanel sur le côté droit de l'écran. Ensuite, placez les boutons dans leurs rangs et mettez-les en mode d'accueil complet. Ensuite, lorsque la boîte de dialogue se développe, le TableLayoutPanel s'étendra pour remplir tout le côté droit de l'écran, chaque ligne s'ajustera proportionnellement, et chaque bouton s'élargira pour s'adapter à la nouvelle taille de ligne.

Vous devrez peut-être ajuster cela un peu pour répondre à vos besoins, en particulier dans la façon dont il se rapporte à l'autre contenu de la fenêtre.

Questions connexes