更改文本框高度?

Gua*_*apo 46 c# textbox .net-3.5 winforms

如何更改文本框的高度?

以下两项都不奏效:

this.TextBox1.Size = new System.Drawing.Size(173, 100);
Run Code Online (Sandbox Code Playgroud)

要么

this.TextBox1.Size.Height = 100;
Run Code Online (Sandbox Code Playgroud)

我希望能够更改单行文本框高度以适应其上的字体大小,如果可能的话不使用多行.

Tom*_*ski 62

进入yourForm.Designer.cs向下滚动到您的文本框.下面的示例适用于textBox2对象.加上这个

this.textBox2.AutoSize = false;
Run Code Online (Sandbox Code Playgroud)

并将其大小设置为您想要的任何大小

this.textBox2.Size = new System.Drawing.Size(142, 27);
Run Code Online (Sandbox Code Playgroud)

像魅力一样工作 - 没有将多线设置为true,但只有在你更改设计器本身的任何选项之后(你将不得不再设置这两行).我认为,这种方法仍然比多线化更好.我在我的应用程序中有一个昵称的文本框,并且有多行,人们有时会意外地写两次名字,比如Thomas \nThomas(你在实际的文本框行中只看到一个).使用这个解决方案,文本只是在每个char之后隐藏到左边的宽度,因此对于用户来说,输入更安全.

  • 不,因为A /它在文本框停靠时不起作用B/As指出,在设计器中更改它会破坏修复 (6认同)
  • 手动更改Designer文件通常不是什么好方法.几乎总是最终会被摧毁. (3认同)
  • 我可以确认亚当的回答和弗兰克的评论,AutoSize确实对智能感知而言是隐藏的。**如果完全输入,它将被识别为有效代码。尝试一下,然后按Ctrl键并在带下划线的**上单击AutoSize,您将在TextBoxBase中看到公共重写方法(来自元数据)。 (2认同)

MrR*_*Roy 58

有两种方法可以做到这一点 :

  • 将文本框的"多行"属性设置为true,在这种情况下,您不希望这样做;
  • 为文本框设置更大的字体大小

我相信这是唯一的方法; 较大的字体大小应自动适合文本框

  • 为什么这标记为正确的答案?[Adam's](http://stackoverflow.com/a/17326753/1579626)回答设置`AutoSize = false`然后设置尺寸是正确的答案. (8认同)

Oli*_*bes 25

您可以设置文本框的MinimumSize和/或MaximumSize属性.这不会立即影响大小,但是当您在窗体设计器中调整文本框大小时,将自动调整大小以满足最小/最大大小约束.即使Multiline设置为false并且不依赖于字体大小,这也可以工作.


Sal*_*lty 8

设置最小尺寸属性

tb_01.MinimumSize = new Size(500, 300);
Run Code Online (Sandbox Code Playgroud)

这对我有用.


Joh*_*own 5

刚刚发现了一个很棒的小技巧,可以为文本框设置自定义高度。

在设计器视图中,将设置为所需的值minimumSize,然后完全删除size设置。这将导致设计者使用新的最小设置进行更新!