繁体   English   中英

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

[英]C# WinForm Auto resize textbox

我正在使用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

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

看一下重载stringFontSizeTextFormatFlags

对于Size类型的参数,使用文本框的ClientSize (或带有文本框宽度的新Size )(并可能添加您的X_MainY_Main - 我不确定它们的用途)并且至少包括TextFormatFlags.WordBreak用于TextFormatFlags (并查看其他的,如果它们也可以用于你)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM