【问题标题】:Increasing TextBox Height without Increasing Font Size在不增加字体大小的情况下增加文本框高度
【发布时间】:2014-02-28 04:19:16
【问题描述】:

我的应用程序中有一个 UserControl,并在其上安装了一个带有属性 Docking.Fill

的 TextBox

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

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

我想要其他方式,在不影响字体大小的情况下,我可以在不使用 Multiline = True 的情况下增加我的 TextBox 的高度。

如果有人帮忙就好了,

【问题讨论】:

  • 大小由 UserControl 决定。通过您在表格中所做的任何事情,您没有记录。将单行的 TextBox.Dock 属性设置为 Fill 是完全错误的,TextBox 失去了调整自身大小以适应字体的能力。当您从 UserControl 而不是 TextBox 派生类时,这几乎肯定会出错。
  • 一个用户控件,一个文本框和标签,当文本框长度= 0时,阴影标签,对。我有一个函数可以找到用户控件或表单中的所有控件并将它们添加到控件列表中,然后我用给定的纵横比重新调整每个控件的大小,以便在 Form/UserControl 的 Load_event 中增加,对。问题是,虽然我的 TextBox 的对接已被填充,但它并没有通过操纵其 Height*Factor 来重新调整大小,这就是我问这个问题的原因,现在我只使用 TextBoxControl.AutoResize = false 然后使用 Size 属性来完成。这就是我想做的事

标签: c# winforms fonts textbox controls


【解决方案1】:

您可以在设计器文件中执行此操作

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

MSDN > TextBoxBase.AutoSize Property

【讨论】:

  • 我必须在运行时更改此大小,正如我所提到的,控件的动态调整大小
  • AutoSize = false; 部分是的,但您希望使用 DockStyle 或其他东西来调整大小。
  • @DareDevil - 这段代码主要针对运行时。
  • @Pranay Rana:是的,我已经测试过了,它很好,但是我已经测试了其他方法,即增加它的 FontSize 和高度,来自“代码项目”的代码帮助
【解决方案2】:

一个自定义函数,它可以根据纵横比调整字体大小并增加文本框的高度。

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);

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多