将WinForms TextBox更改为BorderStyle.None会导致文本被截断

时间:2011-12-12 21:46:31

标签: winforms

我已将WinForms TextBox控件更改为没有边框。

当我这样做时,框中的文本底部像素行被切断。

热门: BorderStyle.Fixed3D(默认)。 底部: BorderStyle.None

enter image description here

您可以看到未边框文本框中的最后一位文字被截断:

enter image description here

我如何说服TextBox(谁的高度无法改变),它需要更高?

4 个答案:

答案 0 :(得分:1)

AutoSize属性就在那里,只是从TextBox继承而且你可以到达这个属性:

public class TextBoxEx : TextBox {

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

}

答案 1 :(得分:0)

这似乎可以解决问题:

public Form2()
{
    InitializeComponent();
    textBox1.Multiline = true;
    textBox1.MinimumSize = new Size(0, 30);
    textBox1.Size = new Size(textBox1.Size.Width, 30);
    textBox1.Multiline = false;
}

答案 2 :(得分:0)

您可以在表单中执行此操作:

    private void RefreshHeight(TextBox textbox)
    {
        textbox.Multiline = true;
        Size s = TextRenderer.MeasureText(textbox.Text, textbox.Font, Size.Empty, TextFormatFlags.TextBoxControl);
        textbox.MinimumSize = new Size(0, s.Height + 1);
        textbox.Multiline = false;
    }

然后你说RefreshHeight(textbox1);

Multiline更改将强制文本框“接受”新尺寸

答案 3 :(得分:-1)

您也可以在Visual Studio Designer中修复此问题。

更改文本框的最小尺寸属性的高度。更改为multiline = true,然后返回false。文本框将调整大小并保持修复。

无需更改代码。