2010-07-29 9 views
0

Je convertis une application d'ASP.NET WebForms en WinForms. Il existe une page asp.net qui contient un ListView/Repeater qui contient plusieurs contrôles personnalisés, qui à leur tour contiennent un ListView avec d'autres contrôles personnalisés. Fondamentalement, la disposition ressemble à un TreeView, mais sur chaque nœud/feuille, il y a peu de contrôles comme les comboboxes, etc.Est-il possible que les contrôles WinForm (Panel, etc.) Se développent comme un contrôle de formulaire Web?

Lorsque cela se trouve dans ASP.NET, la page se déroule automatiquement, donc il y a plusieurs écrans - si J'ajoute 20 boutons dans un panneau, il va grandir et le navigateur aura des barres de défilement. Je voudrais faire la même chose dans une application WinForms - donc je vais avoir un contrôle utilisateur qui contiendra beaucoup de contrôles dans une certaine variation de Panel (Flow, Table layout), et les contrôles pourraient avoir un autre contrôle à l'intérieur, etc.

Le problème est que lorsque je fais une application winforms, chaque contrôle a une hauteur spécifique dans le temps de conception. J'aimerais que certains contrôles utilisateur puissent évoluer avec leur contenu, de sorte qu'ils s'additionnent. Dans le formulaire principal, il devrait y avoir une barre de défilement verticale, tout comme dans le navigateur Web lorsque la page générée est plus grande que l'écran. Je voudrais juste obtenir quelques indications générales dans la bonne direction. Merci.

+0

Je me souviens d'une propriété pour les zones de texte de rapport dans MS Access appelée CanGrow.S'il y avait plus de texte rendu que de place dans la boîte, il pourrait s'agrandir et décaler le reste. Le contrôle a pu grandir avec son contenu. A en juger par votre réponse acceptée, vous voulez qu'un contrôle soit automatiquement redimensionné lorsque son contrôle parent est redimensionné. –

Répondre

1

Ancrer les contrôles au parent. L'ancrage des quatre côtés l'amènera à s'étirer.

+1

il s'étire quand un utilisateur le redimensionne mais pas avec le contenu du contrôle de liste –

2

Oui, à disserter sur Anchor et Dock ... essayer

-Place un panneau sur une forme vide, et définir sa propriété de quai pour le haut

-place une zone de texte dans le panneau, et station d'accueil à plein ... il faut remplir le panneau supérieur tout

-Place un séparateur sur la forme, et si pas correctement déjà accosté, mettre son quai en haut

-place un autre panneau au-dessous du séparateur, et définir son Dock pour remplir

-place une autre zone de texte à l'intérieur du panneau inférieur et le remplir comme ainsi

Maintenant vous avez un formulaire avec deux zones de texte resiable et redimensionner lorsque le formulaire fait.

* vous devrez peut-être définir la propriété MultiLine de la zone de texte sur true, mais vous n'êtes pas sûr.

Espérons que cela aide.

0

Si les réponses Anchoring et Docking ne fonctionnent pas pour vous, il existe une autre option. Ce n'est pas joli, mais vous pouvez accéder aux propriétés d'un contrôle et les modifier dynamiquement pendant l'exécution. Vous feriez quelque chose comme: if(listBox.Items.Count > [yourVal]) listBox.height = [yourFormula] ou quelque chose.

Cela fait longtemps que je n'ai pas fait de Win Form (et je n'ai pas encore mon IDE en main) mais je suis à peu près sûr qu'il y a même un ScrollPanel ou un autre contrôle de défilement votre formulaire. Cela dit, lorsque vous travaillez avec WinForms, moins vous faites défiler vos utilisateurs, mieux c'est.