C#具有文本优先级的结尾

时间:2009-03-09 03:54:37

标签: c# textbox label

我正在连接一个有时足够长的字符串,以免它不适合标签控件。如何让它自动滚动到右侧,这样我总能看到字符串的结尾?

3 个答案:

答案 0 :(得分:4)

虽然我确定有办法,但我必须问,为什么?我认为它看起来和/或工作非常糟糕,可能会让用户感到困惑。

为什么不在末尾用椭圆(...)修剪文本并在标签上显示工具提示?

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

现在,当用户将鼠标悬停在工具提示上时,工具提示将显示全文。由于标签中的文本将被截断并以椭圆结尾,因此用户应该知道将鼠标悬停在更多信息上(通常是标准方式)。

答案 1 :(得分:1)

TextAlign属性允许您指定对齐方式。如果你用它右对齐它,文本的右侧将始终可见。但是,如果您希望它左对齐或居中对齐且仍然具有您描述的行为,我怀疑您需要使用Graphics.MeasureString执行一些测量以确定文本是否适合并动态更改对齐。

答案 2 :(得分:0)

AFAIK没有办法滚动标签。黑客将使用TextBox(只读,关闭边框),然后使用SendKeys.Send()将光标移动到文本的末尾。类似的东西:

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

要让文字不显示为已选中,我必须在标签顺序中更改它的位置(这样它不是1),但在您的情况下这可能不是问题。