TextBox.Text 不能正确证明

本文关键字:确证 证明 不能 Text TextBox | 更新日期: 2023-09-27 18:30:47

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

问题是它实际上并没有这样做,而且它的行为真的很奇怪。短字符串有时会右对齐,长字符串总是左对齐。

我做错了什么?

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

TextBox.Text 不能正确证明

从您的评论中,您希望根据文本长度移动光标位置。您可以使用TextBox.Select()方法。有关详细信息,请查看 MSDN

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

textBoxCurrentConfig.Select(0, 0);

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

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

尝试删除

this.Refresh();

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