TextBox コントロールを使用して、最大長を適用したいと考えています。ただし、最大長は、文字数ではなく、ピクセル単位の文字列サイズに基づいています。
入力する文字数を制限すると、テキスト レンダラーによって文字がトリミングされ、通常は省略記号 (...) で切り捨てられる場合があります。
問題は、必ずしも固定フォントを使用しているとは限らないことです。そして、私は複数行のテキストボックスを使用しています。
フォントのサイズが固定されていない場合は、文字を入力するたびに幅/高さを再計算する必要があります。
このようなもの:
public void ValueChanged()
{
var stringSize = e.Graphics.MeasureString(textBox.Text, textBox.Font);
if(stringSize.Height > MAXSTRINGHEIGHT)
{
textBox.Text = TrimTextAndAddEllipsis(textBox.Text);
}
}
以下の式に従って、その幅を設定する必要があると思います
[border slack] + ([character length] * ([number of characters] + [5 - number of characters Mod 5])).