C#WinForm自动调整大小文本框

时间:2019-04-07 16:40:30

标签: c# winforms resize

我正在使用WinForms,并且试图将文本从一个textbox1传递到另一个textbox2。关键是,textbox2必须根据textbox1的内容自动调整大小。 我设法做到了,只有一个例外。当您在textbox1中创建新行时,它会执行操作。但是,当您使用空格书写而不创建新行时,它无法正确调整我的textbox2的大小。它调整了大小,但由于某种原因没有完全调整大小。

这是我试图做的。

    private void PassTextFunction()
    {
        const int X_Main = 95;
        const int Y_Main = 60;
        Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox1.Font);
        TextBox2.Text.ClientSize = new Size(size.Width + X_Main, size.Height + Y_Main);
        int nInterval = 10;
        string res = String.Concat(TextBox2.Text.Select((c, i) => i > 0 && (i % nInterval) == 0 ? c.ToString() + Environment.NewLine : c.ToString()));
        TextBox2.Text = TextBox1.Text.ToString();
    }

因此,当我制作线条时,所有大小调整都很好。 这是示例: https://imgur.com/zxd5aCd

但是当我写完而没有下一行时,只是简单地键入,其余文本就隐藏在下面,并且由于某些原因,textbox2不会完全调整大小。 这是示例: https://imgur.com/ftbiP55

请问有人可以帮我解决固定代码吗?

1 个答案:

答案 0 :(得分:0)

看看the overload taking string, Font, Size and TextFormatFlags

对于类型为Size的参数,请使用文本框的ClientSize(或使用文本框宽度的新Size)(并可能添加X_MainY_Main -我不确定它们的作用是什么,并且至少将TextFormatFlags.WordBreak包含在TextFormatFlags中(看看其他的,如果它们可以也为您使用)。

...
Size size = TextRenderer.MeasureText(TextBox1.Text, TextBox2.Font, TextBox2.ClientSize, TextFormatFlags.WordBreak);
...