根据我的理解,如果文本长于文本框可以显示的话,下面的代码应该右对齐文本,否则它保持左对齐。
问题在于它实际上并没有这样做,而且它的表现非常奇怪。短字符串有时会右对齐,长字符串总是左对齐。
我做错了什么?
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();
}
答案 0 :(得分:3)
从评论中,您希望根据文本长度移动光标位置。您可以使用TextBox.Select()
方法。 Check MSDN for details
因此,如果您想将光标移动到文本的开头,可以使用
textBoxCurrentConfig.Select(0, 0);
如果要将光标移动到文本末尾,可以使用
textBoxCurrentConfig.Select(textBoxCurrentConfig.Text.Length, 0);
答案 1 :(得分:0)
尝试删除
this.Refresh();
这可能会导致页面刷新并将文本框返回到原始对齐