Как увеличить высоту формы вместе с высотой текстового поля в приложении C# winform?

У меня есть многострочное TextBox в моем приложении WinForm с Multiline = True, Scrollbar = Vertical & WordWrap = True. Что я хочу сделать, так это то, что всякий раз, когда я достигаю нижней части текстового поля (вводя текст или нажимая клавишу ввода), я хочу, чтобы высота формы увеличивалась вместе с высотой текстового поля (точно так же, как в приложении StickyNote в Windows). Я не знаю с чего начать? Пожалуйста помоги.

редактировать

Ниже мой код

private void txtNote_TextChanged(object sender, EventArgs e)
{
    int currentHeight = txtNote.Height;
    int newHeight = 0;
    newHeight = txtNote.PreferredHeight * txtNote.Lines.Length;
    if (newHeight > currentHeight)
    {   
        //** Sriram's suggestion
        //this.ClientSize = new Size(this.ClientSize.Width, txtNote.PreferredHeight * txtNote.Lines.Length);

        //** Hans's suggestion
        Size sz = new Size(txtNote.ClientSize.Width, int.MaxValue);
        TextFormatFlags flags = TextFormatFlags.WordBreak;
        int padding = 3;
        int borders = txtNote.Height - txtNote.ClientSize.Height;
        sz = TextRenderer.MeasureText(txtNote.Text, txtNote.Font, sz, flags);
        int h = sz.Height + borders + padding;
        if (txtNote.Top + h > this.ClientSize.Height - 10)
        {
            h = this.ClientSize.Height - 10 - txtNote.Top;
        }
        txtNote.Height = h;
    }

0 ответов

Другие вопросы по тегам