如何改变文本框的高度?
以下两种方法都不起作用:
this.TextBox1.Size = new System.Drawing.Size(173, 100);
或者this.TextBox1.Size.Height = 100;
我希望能够调整单行文本框的高度以适应其字体大小,如果可能的话,不使用多行文本框。
进入yourForm.Designer.cs文件 向下滚动到您的文本框。以下示例是textBox2对象。 添加此内容
this.textBox2.AutoSize = false;
并将其大小设置为您想要的任何大小
this.textBox2.Size = new System.Drawing.Size(142, 27);
即使不将multiline设置为true,此方法也会像魔法一样运行得很好,但只有在您更改设计师本身的任何选项之前(您将不得不再次设置这两行)。 我认为,这种方法仍然比多行方法更好。我在我的应用程序中有一个昵称文本框,使用多行时,人们有时会意外地写下他们的名字两次,就像Thomas\nThomas(在实际的文本框行中只看到一个)。使用这个解决方案,文本在每个字符过长以后会简单地向左隐藏,因此对于用户来说更加安全,可以输入。
有两种方法可以做到这一点:
我相信这是唯一的方法;更大的字体大小应该会自动适应文本框。
MinimumSize
和/或 MaximumSize
属性。这不会立即影响大小,但当你在窗体设计器中调整文本框的大小时,大小将自动调整以满足最小/最大大小约束。即使将 Multiline
设置为 false
,也可以使用此功能,并且不依赖于字体大小。Margin
属性或容器控件的Padding
属性。 - Olivier Jacot-Descombes我发现一个设置文本框自定义高度的小技巧。
在设计视图中,将minimumSize
设置为您想要的大小,然后完全删除size
设置。这将导致设计师使用新的最小设置进行更新!
设置最小尺寸属性
tb_01.MinimumSize = new Size(500, 300);
public partial class MyTextBox : TextBox
{
[DefaultValue(false)]
[Browsable(true)]
public override bool AutoSize
{
get
{
return base.AutoSize;
}
set
{
base.AutoSize = value;
}
}
public MyTextBox()
{
InitializeComponent();
this.AutoSize = false;
}
}
textBox1.Multiline = true;
textBox1.Height = 100;
textBox1.Width = 173;
步骤:
private void textBox1_Enter(object sender, EventArgs e)
{
panelTextBox.BorderStyle = BorderStyle.FixedSingle;
}
private void textBox1_Leave(object sender, EventArgs e)
{
panelTextBox.BorderStyle = BorderStyle.None;
}
AutoSize、Minimum和Maximum不够灵活。使用多行文本框并处理回车键事件,抑制keypress。效果很好。
textBox1.Multiline = true;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.Handled = true;
e.SuppressKeyPress = true;
}
}