C# 增加文本框高度而不增加字体大小

C# 增加文本框高度而不增加字体大小,c#,winforms,fonts,textbox,controls,C#,Winforms,Fonts,Textbox,Controls,我的应用程序中有一个UserControl,上面安装了一个文本框,带有属性停靠。填充 我的情况是,我动态地增大窗口/窗体的大小,在这种情况下,我的所有控件都会按照新的比例重新调整大小,但我的文本框的高度不会改变 解决方案1: 我必须设置字体大小以增加高度,但问题是,它重新调整了应用程序中使用的所有控件的大小,并且控件中的一些文本重叠 我想要另一种方式,在不影响字体大小的情况下,我可以在不使用Multiline=True的情况下增加文本框的高度 如果有任何body帮助,那就太好了,您可以在desi

我的应用程序中有一个UserControl,上面安装了一个文本框,带有属性停靠。填充

我的情况是,我动态地增大窗口/窗体的大小,在这种情况下,我的所有控件都会按照新的比例重新调整大小,但我的文本框的高度不会改变

解决方案1: 我必须设置字体大小以增加高度,但问题是,它重新调整了应用程序中使用的所有控件的大小,并且控件中的一些文本重叠

我想要另一种方式,在不影响字体大小的情况下,我可以在不使用Multiline=True的情况下增加文本框的高度


如果有任何body帮助,那就太好了,

您可以在designer文件中执行此操作

this.textBox1.AutoSize = false;
this.textBox1.Size = new System.Drawing.Size(100, 20);

MSDN>

一个自定义函数,它使用纵横比重新调整字体大小,并增加文本框的高度

public void IncerseHeightTextBox(TextBox tb, float Aspect_Ratio_Height)
    {
        tb.AutoSize = false;
        tb.Width = (int)(tb.Width * (1.402+1.171)/2); //Width+height Ratio /2
        tb.Font = new Font(tb.Font.FontFamily, tb.Font.Size * Aspect_Ratio_Height);
        tb.Size = new Size(tb.Width, (int)(tb.Height * Aspect_Ratio_Height));
    }
和函数调用:

IncerseHeightTextBox(tb2, (float)1.171);

正如我所提到的,我必须在运行时更改此大小,
AutoSize=false上控件的动态重新调整大小部分,但您可能希望使用DockStyle或其他工具来调整大小。@DareDevil-这段代码主要针对运行时。@Pranay Rana:是的,我已经测试过了,很好,但我已经测试过其他方法,随着高度增加其字体大小,代码帮助来自“代码项目”。大小由用户控件决定。无论你在表格中做了什么,你都没有记录下来。将单行的TextBox.Dock属性设置为Fill完全是错误的,TextBox失去了调整自身大小以适应字体的能力。当您从UserControl而不是TextBox派生类时,这几乎肯定是错误的。一个UserControl,一个TextBox及其上的标签,当TextBox长度=0时为Shadow添加标签,对吧。我有一个函数,可以查找UserControl或Form中的所有控件,并将它们添加到控件列表中,然后我用给定的纵横比重新调整每个控件的大小,以增加表单/UserControl的loadu事件,对吧。问题是,虽然我的TextBox的停靠已填充,但它并没有通过操纵其高度*因子来重新调整大小,这就是为什么我提出了这个问题,现在我只使用TextBoxControl.AutoResize=false,然后使用Size属性。这就是我想要做的