Question

Je concatène une chaîne qui est parfois assez longue pour ne pas tenir dans un contrôle d'étiquette. Comment puis-je le faire défiler automatiquement à droite afin que je voie toujours la fin de la chaîne?

Était-ce utile?

La solution

Bien que je sois sûr qu'il y ait des façons de faire, je dois demander pourquoi. Je pense que cela semblerait et / ou fonctionnerait très mal et probablement dérouterait l'utilisateur.

Pourquoi ne pas couper le texte avec une ellipse (...) à la fin et afficher une info-bulle sur l'étiquette?

using System.Windows.Forms;

var label = new Label();
label.AutoSize = false;
label.AutoEllipsis = true;
label.Text = "This text will be too long to display all together.";

var labelToolTip = new ToolTip();
labelToolTip.SetToolTip(label, label.Text);

Maintenant, l'info-bulle affiche le texte intégral lorsque l'utilisateur la survole. Étant donné que le texte de l'étiquette sera tronqué et se terminera par une ellipse, l'utilisateur doit savoir qu'il passe la souris sur son curseur pour obtenir plus d'informations (généralement par le biais du moyen standard).

Autres conseils

Le TextAlign vous permet de spécifier l'alignement. Si vous le justifiez à droite, le côté droit du texte sera toujours visible. Toutefois, si vous souhaitez que le comportement que vous décrivez soit à gauche ou au centre justifié, vous devez effectuer certaines mesures à l'aide de Graphics.MeasureString pour déterminer si le texte s’ajuste et modifier l’alignement de manière dynamique.

Autant que je sache, il n’est pas possible de faire défiler une étiquette. Un hack consisterait à utiliser une zone de texte (en lecture seule, désactiver la bordure), puis à utiliser SendKeys.Send () pour déplacer le curseur à la fin du texte. Quelque chose comme:

        textBox1.Focus();
        SendKeys.SendWait("{END}");

Pour que le texte ne s'affiche pas comme sélectionné, je devais modifier sa position dans l'ordre de tabulation (afin que ce ne soit pas 1), mais cela peut ne pas être un problème dans votre cas.

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