Question

J'ai des contrôles sur un formulaire, et je les ai ancrés à gauche et à droite du formulaire pour assurer leur croissance et réduire la forme. Ma forme est aussi appelé à croître automatiquement et réduire afin de tenir compte des étiquettes qui peuvent obtenir des chaînes longues. Lorsque ces étiquettes obtiennent leurs longues chaînes enlevées, je veux que ma forme pour revenir à la largeur qu'il était avant. Ces contrôles qui sont ancrés à gauche et à droite sur ma forme semblent empêcher cela. Puis-je le faire fonctionner comme je l'entends?

Était-ce utile?

La solution

Voici une façon qui ne vous oblige pas à écrire un code spécifique de dimensionnement ... mais il assume tous les boutons sont en bas.

Étape 1. Définissez une taille minimale pour la boîte de dialogue.

Étape 2. Créez un panneau sur le formulaire.

Étape 3. Déplacez vos boutons dans le panneau.

Étape 4. Dock le panneau au bas du formulaire.

Étape 5. Assurez-vous que les boîtes de dialogue AutoSizeMode est réglé sur ShrinkAndGrow

Vous pouvez amarrer des panneaux à l'un des gauche, à droite, les bordures supérieure et inférieure avec cette technique. et ont la boîte de dialogue Redimensionner de façon appropriée.

Autres conseils

Puis-je vous suggère de pas faire? Je sais que vous essayez d'être utile pour vos utilisateurs, mais ayant une fenêtre rétrécissement au hasard (il semblera probablement aléatoire à l'utilisateur) va être source de confusion et peut-être frustrant. Ceci est probablement encore plus vrai avec la nouvelle fonctionnalité de l'interface utilisateur de Windows 7 Aero Snap vous dire ancrer la fenêtre à gauche puis redimensionne sur vous.

Pensez à la taille de la fenêtre une préférence de l'utilisateur. L'utilisateur a déjà dit de la taille qu'ils veulent que la chose est, respecter!

Edit: Je dois aussi ajouter qu'il ya un bug si vous allez dans cette voie. Considérez la forme étant 1000 Pixes large et l'utilisateur fait glisser à (-500, 100) pour montrer la moitié de leur moniteur. S'ils ont frappé un bouton qui est visible (ou pire, quelque chose se passe en arrière-plan!) Et la forme redimensionne jusqu'à 450 pixels de la fenêtre vient de disparaître! L'utilisateur qu'il voit dans la barre des tâches, mais il ne peut y accéder à moins de connaître quelques raccourcis de fantaisie alt + espace.

Une suggestion serait d'accrocher l'événement OnPaint. Vos commandes sont construits par ce point et ont leurs valeurs d'emplacement initialement fixés sur le formulaire. Capturez tout ce que vous voulez dans un ensemble d'objets privé au niveau de la forme.

Lors d'un événement OnStringsRemoved, lisez de votre objet et tout reculer la façon dont il était. Modification d'un contrôle qui est ancré devrait déclencher la forme mais Redimensionner il se peut que vous devez définir tout manuellement. Il se peut aussi que la modification de la forme diminuera les contrôles et non l'inverse.

Une autre suggestion serait de simplement vos valeurs initiales hardcode et y revenir chaque fois. Personnellement, j'opter pour OnPaint. Il vous aidera à gérer les choses comme les grandes polices cognant taille de contrôle ou quoi que ce soit le cadre avant que l'utilisateur ne le voit.

utiliser System.Drawing.Graphics.MeasureString

    public SizeF MeasureString(string text, Font font, int width);

text = yourtext; font = fontofthelabel; width = maxwidthoflabel;

MeasureString dans MSDN

vous pouvez google pour plus

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