1

私の理解によれば、以下のコードは、テキストがテキストボックスに表示できる長さよりも長い場合はテキストを右寄せし、そうでない場合は左寄せのままにします。

問題は、実際にはこれを行わず、非常に奇妙な動作をしていることです。短い文字列は右揃えになることがあり、長い文字列は常に左揃えになります。

私は何が間違っているのですか?

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

2 に答える 2

3

コメントから、テキストの長さに応じてカーソル位置を移動したいとします。TextBox.Select()これにはメソッドを使用できます。詳細については、MSDNを確認してください

したがって、テキストの先頭にカーソルを移動したい場合は、次を使用できます。

textBoxCurrentConfig.Select(0, 0);

テキストの最後にカーソルを移動したい場合は、次を使用できます。

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

于 2012-04-10T17:53:20.643 に答える
0

削除してみてください

this.Refresh();

ページが更新され、テキストボックスが元の位置合わせに戻る可能性があります

于 2012-04-10T09:03:46.840 に答える