私の理解によれば、以下のコードは、テキストがテキストボックスに表示できる長さよりも長い場合はテキストを右寄せし、そうでない場合は左寄せのままにします。
問題は、実際にはこれを行わず、非常に奇妙な動作をしていることです。短い文字列は右揃えになることがあり、長い文字列は常に左揃えになります。
私は何が間違っているのですか?
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();
}