如何在不使用 Multiline = "true" 或不增加字体大小的情况下增加文本框的高度?

问题描述 投票:0回答:4

我需要调整文本框的高度,使其适合触摸屏。

我理解人们推荐

Multiline = "true"
,但如果我这样做,框内的文本会与顶部对齐,这在我的应用程序中是不正确的。

我尝试调整字体大小,但大小应该大得离谱才能满足我的需要。

还有其他方法可以增加文本框的高度吗?

c# winforms textbox
4个回答
12
投票

试试这个:

textBox1.AutoSize = false;

它不会显示在智能感知中,但它会起作用。

要使其与设计器配合使用,您必须制作自己的文本框:

public class TextBoxEx : TextBox {
  public TextBoxEx() {
    this.AutoSize = false;
  }
}

1
投票

技巧步骤:

  1. 设置多行= true
  2. 无需更改字体大小。
  3. 更改最大长度。这样它就不会进入下一行。

0
投票

对于我想做的事情,使用标签代替

BorderStyle=Fixed3D
AutoSize=False
做到了这一点。


0
投票

我发现下面的解决方案是一个足够好的妥协方案。它关闭控件的 AutoSize 属性并增加其内容的字体大小。到目前为止,它似乎适用于各种 DPI 环境。

public class SingleLineTextBox : TextBox
{
    protected override void OnCreateControl()
    {
        base.OnCreateControl();
        if (Font is Font font)
        {
            // Suppress the single-line textbox's fixed height
            AutoSize = false;
            // Increase size of textbox contents to compensate for vertical displacement
            Font = new Font(font.FontFamily, font.Size + 0.5F);
        }
    }
}

此解决方案后:

在此解决方案之前:

© www.soinside.com 2019 - 2024. All rights reserved.