Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据文本长度调整文本框和表单大小_C#_Winforms_Visual Studio_Textbox - Fatal编程技术网

C# 根据文本长度调整文本框和表单大小

C# 根据文本长度调整文本框和表单大小,c#,winforms,visual-studio,textbox,C#,Winforms,Visual Studio,Textbox,如何根据文本长度自动增加/减少TextBox和Windows窗体大小?您可以尝试覆盖事件,然后根据文本大小更改 protected override OnTextChanged(EventArgs e) { using (Graphics g = CreateGraphics()) { SizeF size = g.MeasureString(Text, Font); Width = (int)Math.Ceiling(size.Width);

如何根据文本长度自动增加/减少TextBox和Windows窗体大小?

您可以尝试覆盖事件,然后根据文本大小更改

protected override OnTextChanged(EventArgs e)
{
    using (Graphics g = CreateGraphics())
    {
        SizeF size = g.MeasureString(Text, Font);
        Width = (int)Math.Ceiling(size.Width);
    }
    base.OnTextChanged(e);
}

试试这个,它也会起作用

在这里,我把100作为文本框的最小宽度。“txt”是文本框

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;
    }
}

希望有帮助。

在属性中将宽度设置为“自动”

这里是更好的解决方案。 场景是:我有一个填充在表单上的文本框(usercontrol)。所以,每次文本框中的行数改变时,我都想改变表单高度,但它的高度不小于MinHeight(一个常量)


希望这有帮助

使用Autosize属性@Jodrell这不会更改文本框的宽度,只会更改高度。我也从未在文本框TextChanged上尝试过它;)但当我根据内部标签的文本调整用户控件的大小时,它对我来说是有效的。我从来没有工作过Override@rapsalands在不重写的情况下,所有
OnTextChanged(EventArgs e)
都会触发事件。他们做完全相同的事情,所以它仍然会工作。不,不,我知道它仍然会工作,我只是说我从来没有做过覆盖技术。我是这个领域的新手,需要学习和探索很多东西。我喜欢你的技巧,这就是为什么在我的收藏夹中添加了这个问题,以便我可以随时参考。谢谢。@rapsalands它当然有它的好处:)这是一个很好的学习领域。干杯
private void ExtendFormHeight()
        {
            int heightChanged = txtText.PreferredSize.Height - txtText.ClientSize.Height;
            if (Height + heightChanged > MinHeight)
            {
                Height += heightChanged;
            }
            else
            {
                Height = MinHeight;
            }
        }