C# 根据文本长度调整文本框和表单大小
如何根据文本长度自动增加/减少TextBox和Windows窗体大小?您可以尝试覆盖事件,然后根据文本大小更改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);
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;
}
}