Изменение размера текстового поля и размера формы в соответствии с длиной текста - PullRequest
4 голосов
/ 14 ноября 2011

Как я могу автоматически увеличивать / уменьшать размер TextBox и Windows Form в соответствии с длиной текста?

Ответы [ 4 ]

9 голосов
/ 14 ноября 2011

Вы можете попробовать переопределить событие OnTextChanged , а затем изменить Ширина в зависимости от размера текста.

protected override OnTextChanged(EventArgs e)
{
    using (Graphics g = CreateGraphics())
    {
        SizeF size = g.MeasureString(Text, Font);
        Width = (int)Math.Ceiling(size.Width);
    }
    base.OnTextChanged(e);
}
2 голосов
/ 14 ноября 2011

Попробуйте, это также будет работать ...

Здесь я взял 100 как минимальную ширину текстового поля.«txt» - это TextBox.

const int width = 100;

private void textBox1_TextChanged(object sender, EventArgs e)
{
    Font font = new Font(txt.Font.Name, txt.Font.Size);

    Size s = TextRenderer.MeasureText(txt.Text, font);
    if (s.Width > width)
    {
        txt.Width = s.Width;
    }
}

Надеюсь, это поможет.

1 голос
/ 25 марта 2014

Вот лучшее решение. Сценарий: у меня есть текстовое поле, которое заполнено в форме (usercontrol). Итак, я хочу изменить Высоту формы каждый раз, когда изменяется номер строки в textBox, но ее высота не меньше, чем MinHeight (константа)

private void ExtendFormHeight()
        {
            int heightChanged = txtText.PreferredSize.Height - txtText.ClientSize.Height;
            if (Height + heightChanged > MinHeight)
            {
                Height += heightChanged;
            }
            else
            {
                Height = MinHeight;
            }
        }

Надеюсь, это поможет!

0 голосов
/ 15 февраля 2013

установить ширину на Авто в свойствах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...