一尘不染

垂直自动调整文本框大小

c#

在C#表单中,我有一个固定在所有侧面的面板,而里面是一个固定在顶部/左侧/右侧的文本框。

当文本加载到文本框中时,我希望它自动垂直扩展,这样我就不需要滚动文本框(最多滚动面板,如果有更多文本不适合该面板)。有没有办法用文本框做到这一点?(我不受约束地使用此控件,因此,如果有另一个适合该说明的控件,请随意提及)


阅读 346

收藏
2020-05-19

共1个答案

一尘不染

我假设这是一个多行文本框,并且您将允许它垂直增长。该代码运行良好:

    private void textBox1_TextChanged(object sender, EventArgs e) {
        Size sz = new Size(textBox1.ClientSize.Width, int.MaxValue);
        TextFormatFlags flags = TextFormatFlags.WordBreak;
        int padding = 3;
        int borders = textBox1.Height - textBox1.ClientSize.Height;
        sz = TextRenderer.MeasureText(textBox1.Text, textBox1.Font, sz, flags);
        int h = sz.Height + borders + padding;
        if (textBox1.Top + h > this.ClientSize.Height - 10) {
            h = this.ClientSize.Height - 10 - textBox1.Top;
        }
        textBox1.Height = h;
    }

当文本框为空时,您应该做一些合理的事情,例如设置MinimumSize属性。

2020-05-19