TextBox.Text无法正确对齐

时间:2012-04-10 09:00:20

标签: c# string textbox text-justify

根据我的理解,如果文本长于文本框可以显示的话,下面的代码应该右对齐文本,否则它保持左对齐。

问题在于它实际上并没有这样做,而且它的表现非常奇怪。短字符串有时会右对齐,长字符串总是左对齐。

我做错了什么?

private void textBoxCurrentConfig_TextChanged(object sender, EventArgs e)
{
    SizeF stringSize = new SizeF();
    stringSize = TextRenderer.MeasureText(textBoxCurrentConfig.Text, textBoxCurrentConfig.Font);

    float currentTextWidth = stringSize.Width;
    float allowedTextWidth = textBoxCurrentConfig.Size.Width - 10;

    if (currentTextWidth >= allowedTextWidth) // if the text we want to display is larger than the textbox can hold, right justify it to show the filename
    {
        textBoxCurrentConfig.TextAlign = HorizontalAlignment.Right; // right justify                
    }
    else // otherwise we can display the entire path
    {
        textBoxCurrentConfig.TextAlign = HorizontalAlignment.Left; // left justify
    }

    textBoxCurrentConfig.Refresh();
    this.Refresh();
}

2 个答案:

答案 0 :(得分:3)

从评论中,您希望根据文本长度移动光标位置。您可以使用TextBox.Select()方法。 Check MSDN for details

因此,如果您想将光标移动到文本的开头,可以使用

textBoxCurrentConfig.Select(0, 0);

如果要将光标移动到文本末尾,可以使用

textBoxCurrentConfig.Select(textBoxCurrentConfig.Text.Length, 0);

答案 1 :(得分:0)

尝试删除

this.Refresh();

这可能会导致页面刷新并将文本框返回到原始对齐