如何根据文本长度自动调整TextBox和Windows Form的大小?
你可以尝试覆盖 OnTextChanged 事件,然后根据文本的大小更改Width。
protected override OnTextChanged(EventArgs e)
{
using (Graphics g = CreateGraphics())
{
SizeF size = g.MeasureString(Text, Font);
Width = (int)Math.Ceiling(size.Width);
}
base.OnTextChanged(e);
}
OnTextChanged(EventArgs e)
只是触发事件。它们做的事情完全相同,所以它仍然可以工作。 - Connell试一下这个,它也可以工作...
在这里,我将文本框的最小宽度设置为100。"txt"是TextBox。
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;
}
}
这里有一个更好的解决方案。 场景是:我有一个文本框,填充在表单(用户控件)中。因此,每次文本框中的行数发生变化时,我希望改变表单的高度,但其高度不低于MinHeight(一个常量)。
private void ExtendFormHeight()
{
int heightChanged = txtText.PreferredSize.Height - txtText.ClientSize.Height;
if (Height + heightChanged > MinHeight)
{
Height += heightChanged;
}
else
{
Height = MinHeight;
}
}
在属性中将宽度设置为自动