Comment redimensionner un bouton en fonction de son texte
Dans le processus de traduction d'une application avec C# + Winforms, j'ai besoin de changer un texte du bouton en fonction de la langue.
Mon problème est le suivant :
Disons que je veux traduire un bouton de "Salut à tous!" à "Bonjour tout le monde" !
Comme vous pouvez le deviner, le bouton de la taille ne sera pas la même si je entrer un texte en anglais ou en français... Ma question est "simple", comment puis-je gérer pour redimensionner le bouton à la volée, de sorte que le texte s'adapte à son contenu dans le bouton ?
Jusqu'à présent j'ai eu quelque chose comme ça !
[Salut à tous!]
[Bonjour]
source d'informationauteur Andy M
Vous devez vous connecter pour publier un commentaire.
Votre meilleur pari est de définir la AutoSize propriété comme décrit ach répondre
Toutefois, si le redimensionnement automatique ne fonctionne pas pour vous, redimensionner le bouton dans le code est assez facile. Vous pouvez juste besoin de mettre le bouton de largeur. Le truc, il est assez grand pour s'adapter à votre texte.
Il n'y a absolument pas besoin d'utiliser le sous-jacent
Graphics
objet comme les autres affiches ont dit.Si vous réglez le bouton de
AutoSize
true à la propriété, laAutoSizeMode
àGrowAndShrink
et laAutoEllipsis
à false, il sera redimensionné automatiquement en fonction du texte.Cela étant dit, vous devrez peut-être faire plusieurs mise en page de réglages à effectuer ce changement s'intégrer dans votre INTERFACE utilisateur. Vous pouvez régler le bouton de rembourrage pour ajouter de l'espace autour du texte, et vous voudrez peut-être placer vos boutons dans un
TableLayoutPanel
(ou quelque chose) pour les empêcher de chevauchement quand ils redimensionner.Edit:
@mastro a souligné que:
AutoEllipsis
n'est valide que lorsqueAutoSize
estfalse
(Comme expliqué dans la documentation), de sorte qu'il peut être ignoré en toute sécurité aussi longtemps que les trois autres propriétés sont définies correctement.Essayez ceci:
Comme Andrew Hanlon explique, vous pouvez définir
AutoSize = true
.En faisant cela, vous pouvez également atteindre le parfait agencement des boutons automatiquement en les plaçant sur un
FlowLayoutPanel
.La distance horizontale entre eux sera toujours la même lorsque le
FlowDirection
de laFlowLayoutPanel
estLeftToRight
ouRightToLeft
. Vous pouvez ajuster cette distance de réglage de laMargin
propriété des boutons de manière appropriée. Vous pouvez créer des groupes de boutons en augmentant la marge de gauche des boutons de commencer un nouveau groupe.Si vous définissez la
Dock
propriété des boutons àDockStyle.Fill
ils vont même pousser leur largeur automatiquement pour s'adapter à la plus large bouton si leFlowDirection
de laFlowLayoutPanel
estTopDown
ouBottomUp
.Pour activer un Bouton en WinForms grandir et/ou de rétrécir en fonction de la taille du Texte, vous devez placer le bouton
AutoSize
propriétéTrue
et laAutoSizeMode
propriétéGrowAndShrink
.Veuillez noter que le
AutoSize
propriété autorise uniquement le bouton de la taille de croître si l'AutoSizeMode
propriété est définie àGrowOnly
; par modification de laAutoSizeMode
propriétéGrowAndShrink
le bouton sera maintenant automatiquement d'étendre ou de réduire la largeur et la hauteur en fonction de sesText
de la propriété.Également noter que dans la définition de ces deux propriétés, comme indiqué ci-dessus, vous pouvez faire usage de nouvelles lignes (
Environment.NewLine
ouvbCrLf
) dans la propriété de Texte et le bouton de mise à l'échelle si nécessaire.