如何设置文本框的高度?

对于我的单行文本框,我设置为Border = None。 在这样做时,高度变得非常小。 我无法以编程方式设置文本框的高度。 如果我设置任何边框,然后再次罚款,但我不想要任何边框。 即使文本也不完全可见 – 因此字体大小已经大于文本框高度。

我尝试创建自定义文本框,并设置它的高度,但它没有任何效果。 如何处理这种情况? 任何帮助都非常感谢。

我刚刚在一个空项目中创建了这个案例,但没有看到你描述的结果。

如果BorderStyle为none,则文本框的显示区域会自动调整为所选字体。 如果我然后设置Multiline = true,我可以更改Size属性的高度部分和更改。

也许代码的另一部分是修改高度? 也许是resize事件处理程序?

我的建议:

  • 发布代码的相关部分
  • 尝试在空的WinForms项目中重现该问题(正如我刚才所做的那样)

有一种不创建新类的简单方法。 在Designer.cs文件中:

this.textBox1.AutoSize = false; this.textBox1.Size = new System.Drawing.Size(228, 25); 

就这样。

TextBox派生自Control ,它具有AutoSize属性,但设计者已将属性隐藏在PropertyGrid和Intellisense中,但您仍然可以访问它:

 public class TextBoxWithHeight : TextBox { public TextBoxWithHeight() { base.AutoSize = false; } } 

重建和使用。

无论您选择哪种BorderStyleTextBox控件都会自动resize以适应其Font的高度。 这是Visual Studio使用的默认值的一部分。

通过更改Multiline ,您可以覆盖Height

 this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 26.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.textBox1.Location = new System.Drawing.Point(373, 502); // this is what makes the height 'stick' this.textBox1.Multiline = true; // the desired height this.textBox1.Size = new System.Drawing.Size(100, 60); 

希望这可以帮助。

我发现最好的解决方案是子类化Textbox并在那里公开隐藏的AutoSize:

 public class TextBoxWithHeight : TextBox { public bool Auto_Size { get { return this.AutoSize; } set { this.AutoSize = value; } } } 

现在,您可以使用可视化设计器中的对象检查器或代码中的任何内容来打开或关闭自动resize。

只需选择您的文本框并转到属性然后增加字体大小 ..完成!