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

v2g6jxz6  于 2023-10-23  发布在  其他
关注(0)|答案(4)|浏览(116)

我需要调整文本框的高度,使其适合触摸屏。
我知道人们推荐Multiline = "true",但如果我这样做,框内的文本是合理的顶部,这是不适当的,在我的应用程序。
我试图调整字体大小,但大小应该是可笑的巨大,以适应我的需要的高度。
有没有其他方法可以增加文本框的高度?

zlhcx6iw

zlhcx6iw1#

试试这个:

textBox1.AutoSize = false;

它不会出现在智能感知中,但它会起作用。
要让它与设计器一起工作,你必须制作自己的TextBox:

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

1sbrub3j2#

技巧步骤:
1.设置多行= true
1.不需要改变字体大小。
1.更改最大长度。这样它就不会进入下一行。

bwitn5fc

bwitn5fc3#

对于我想做的事情,使用标签代替BorderStyle=Fixed3DAutoSize=False就可以了。

vlju58qv

vlju58qv4#

我发现下面的解决方案是一个相当不错的妥协。它关闭控件的AutoSize属性并增大其内容的字体大小。到目前为止,它似乎对各种DPI上下文都很适用。

public class SingleLineTextBox : TextBox
{
    protected override void OnCreateControl()
    {
        base.OnCreateControl();

        if (Font is Font font)
            using (font)
            {
                // Suppress the single-line textbox's fixed height
                AutoSize = false;
                // Increase size of textbox contents to compensate
                // for vertical shift
                Font = new Font(font.FontFamily, font.Size + 0.75F);
            }
    }
}

在此解决方案之后:

在此解决方案之前:

相关问题