根据maxlength设置文本框的宽度

时间:2014-08-22 11:29:06

标签: c# winforms

我正在使用winforms应用程序,我想设置文本框的宽度,它将显示字符直到最大长度,简而言之,如 width = maxlength 。有任何预定义属性吗?或者我们必须手动计算?

//我正在寻找这种类型的逻辑

  private void Form1_Load(object sender, EventArgs e)
    {
        //sample project
        textBox2.Width = textBox2.MaxLength;
        textBox3.Width = textBox3.MaxLength;
        textBox4.Width = textBox4.MaxLength;
    }

3 个答案:

答案 0 :(得分:3)

您有一个单位不匹配:宽度以像素为单位,MaxLength以字符为单位。

所以你需要使用例如测量字体Graphics.MeasureString ..最适合Consolas等固定字体。

您可以测量字体,例如像这样,使用' x'作为中等宽度的字母:

using (Graphics G = textBox2.CreateGraphics())
   textBox2.Width = (int) (textBox2.MaxLength * 
                           G.MeasureString("x", textBox2.Font).Width);

您可以使用其他字体测量方法,例如TextRenderer.MeasureText;这两种方法都有options来微调测量。上面的默认值将包括一些余地。

如果您使用固定字体,宽度就可以了,如果您不想确定自己是否安全,请使用" W&# 34;或" M"测量)与否。 " X"可能是妥协。或者你可以在例如动态调整。 TextChanged事件..

答案 1 :(得分:0)

使用Anchor属性定义控件在调整其父控件的大小时自动调整大小的方式 将控件锚定到其父控件可确保在调整父控件时,锚定边缘相对于父控件的边缘保持在相同位置。

答案 2 :(得分:0)

试试这个:

textbox1.MaxLength = 0//The default value is 0, which indicates no limit;

请参阅此msdn链接以获取更多信息:

msdn link for textbox maxlength