Вопрос

Я объединяю строку, которая иногда бывает достаточно длинной, чтобы она не помещалась в элемент управления меткой. Как сделать так, чтобы он автоматически прокручивался до правого края, чтобы я всегда видел конец строки?

Это было полезно?

Решение

Хотя я уверен, что есть способы, я должен спросить, почему? Я думаю, что это будет выглядеть и / или работать очень плохо и, вероятно, запутать пользователя.

Почему бы не обрезать текст с помощью эллипса (...) в конце и показать подсказку на ярлыке?

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);

Теперь подсказка будет отображать полный текст, когда пользователь наводит на него курсор. Поскольку текст в метке будет обрезан и закончится в виде эллипса, пользователь должен знать, чтобы навести курсор на него для получения дополнительной информации (обычно стандартным способом).

Другие советы

TextAlign позволяет указать выравнивание. Если вы правомерно с этим справитесь, правая часть текста всегда будет видна. Тем не менее, если вы хотите, чтобы он был выровнен по центру или слева, и при этом сохранялось поведение, которое вы описали, я подозреваю, что вам нужно будет выполнить некоторые измерения, используя Graphics.MeasureString , чтобы определить, подходит ли текст, и динамически изменить выравнивание.

AFAIK нет способа прокрутить ярлык. Хаком было бы использовать TextBox (только для чтения, отключить границу), а затем использовать SendKeys.Send (), чтобы переместить курсор в конец текста. Что-то вроде:

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

Чтобы текст не отображался как выделенный, мне пришлось изменить его положение в порядке табуляции (чтобы оно не было 1), но в вашем случае это может не быть проблемой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top