将WinForms文本框更改为BorderStyle。无会导致文本被截断

将WinForms文本框更改为BorderStyle。无会导致文本被截断,winforms,Winforms,我已将WinForms文本框控件更改为无边框 当我这样做的时候,框中的文本的底部像素行被切断 顶部:边框样式。Fixed3D(默认)底部:边框样式。无 您可以看到无边框文本框中的最后一位文本被截断: 我如何说服一个文本框(谁的身高不能改变),它需要更高?这似乎起到了关键作用: public Form2() { InitializeComponent(); textBox1.Multiline = true; textBox1.MinimumSize = new Siz

我已将WinForms
文本框
控件更改为无边框

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

顶部:
边框样式。Fixed3D
(默认)底部:
边框样式。无

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


我如何说服一个
文本框(谁的身高不能改变),它需要更高?

这似乎起到了关键作用:

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

AutoSize
属性,只需从
TextBox
继承即可访问该属性:

public class TextBoxEx : TextBox {

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

}

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

    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)


多行
更改将强制文本框“接受”新大小

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

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


无需更改代码。

是否有一个可以打开或关闭的autosize属性。?你应该能够设置宽度和高度,除非我大错特错。事实上,你大错特错了。您正在考虑自动调整大小。我的第一个想法也是这样;关闭和打开它,以便.NET从其程序集中取出头部。但是
TextBox
没有
AutoSize
属性。此外,任何调整文本框高度的尝试(例如,
高度
边界高度
客户端角度
客户端大小
)都会忽略任何高度更改。
TextBox
决定了它本身的高度,就是这样。试试这里的厕所,它非常相似,这在VS2017中不起作用。它会向右切换回来。缺少一个步骤?VS2013。也许2017年会有所不同。