TextBox のサイズを内容に応じて設定する

TextBox のサイズを内容に応じて設定するには、TextRenderer クラスの MeasureText メソッドで表示サイズを計算し、その値を TextBox に設定する。

TextBox のサイズは境界を含んでいる。そのため BorderStyle が None 以外の場合、計算したサイズをそのまま設定すると、テキストが入りきらないことがある。

using System;
using System.Windows.Forms;

namespace AutoSizeTextBox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Multiline = true;
            textBox1.BorderStyle = BorderStyle.None;
            textBox1.AppendText(
                "TextBox のサイズを内容に応じて設定するには、" + Environment.NewLine +
                "TextRenderer.MeasureText で" + Environment.NewLine +
                "表示サイズを計算し、" + Environment.NewLine +
                "その値を TextBox に設定する。");
            textBox1.Size = TextRenderer.MeasureText(textBox1.Text, textBox1.Font);
        }
    }
}

f:id:tt195361:20150519135445p:plain