如何设置文本框的高度?

时间:2011-07-15 17:37:14

标签: c# winforms

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

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

6 个答案:

答案 0 :(得分:9)

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

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

就是这样。

答案 1 :(得分:7)

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

public class TextBoxWithHeight : TextBox {

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

重建和使用。

答案 2 :(得分:3)

无论您选择TextBox

Font控件都会自动调整大小以适应BorderStyle的高度。这是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);

希望这有帮助。

答案 3 :(得分:2)

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

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

也许代码的另一部分正在修改高度?也许是调整大小事件处理程序?

我的建议:

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

答案 4 :(得分:0)

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

port

现在,您可以使用可视化设计器中的对象检查器或代码中的对象检查器打开或关闭自动调整大小。

答案 5 :(得分:-2)

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