C # ont des priorités de fin de texte
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?
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.
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.