特定の文字数 (ほとんどの場合 12 または 14 など) のみを含むことが許可されているテキスト ボックスがいくつかあります。
単語に応じて、テキスト ボックスの幅を 12 文字または 14 文字に動的に変更することはできますか?
TextRenderer.MeasureTextメソッドは常にあります。
フォームDLLを使用してもかまわない限り。
または、グラフィックライブラリヘルパーメソッドGraphics.MeasureString。
次に、この情報を使用してあらゆる種類のサイズ設定を行うことができます。MSDNエントリの例を確認してください。
あなたの質問を正しく理解しているかどうかはよくわかりませんが、特定の文字列に対して、以下のサンプル メソッドのように、TextBox のプロパティText
とプロパティを同時に設定できます。Width
指定されたテキストと TextBox のすべてのフォント関連プロパティからFormattedTextオブジェクトを作成します。次に、空の文字列を TextBox に割り当てて、「空の」幅を取得します(これは、左右のパディング、左右の境界線の太さなどを追加することでも可能です)。最後に、このメソッドはText
プロパティを割り当てWidth
、空の幅に FormattedText の幅を加えた値を設定します。
public void SetTextAndWidth(TextBox textBox, string text)
{
Typeface typeface = new Typeface(
textBox.FontFamily, textBox.FontStyle, textBox.FontWeight, textBox.FontStretch);
FormattedText formattedText = new FormattedText(text, CultureInfo.InvariantCulture,
FlowDirection.LeftToRight, typeface, textBox.FontSize, Brushes.Black);
if (textBox.HorizontalAlignment == HorizontalAlignment.Stretch)
{
textBox.HorizontalAlignment = HorizontalAlignment.Left;
}
textBox.Text = "";
double emptyWidth = textBox.ActualWidth;
textBox.Text = text;
textBox.Width = formattedText.Width + emptyWidth;
}