C# 可以让字符串保持相同的宽度吗?

C# 可以让字符串保持相同的宽度吗?,c#,string,width,C#,String,Width,我使用Winform,我有许多标签列成列表视图。 标签有三个内容在一行,我希望我可以有一些方法,让每个内容相同的宽度。 我尝试了PadRight,但它并没有真正解决问题,如果内容是全宽的,那么计算字符串。长度没有用 我的标签是动态创建的,如下所示: int lineheight=24; for(int i=0; i<40;i++){ Label test = new Label(); test.Name = "test" + i; test.Text = padLe

我使用Winform,我有许多
标签
列成
列表视图
。 标签有三个内容在一行,我希望我可以有一些方法,让每个内容相同的宽度。 我尝试了
PadRight
,但它并没有真正解决问题,如果内容是全宽的,那么计算
字符串。长度
没有用

我的标签是动态创建的,如下所示:

int lineheight=24;
for(int i=0; i<40;i++){
    Label test = new Label();
    test.Name = "test" + i;
    test.Text = padLength(str1, 16) + padLength(str2, 27) + padLength(str3, 10); // str1~str3 is data that user input in another user control
    test.AutoSize = false;
    test.Top = 10 + lineheight * i;
    test.Left = lineheight;
    test.Width = panel1.Width - lineheight;
    test.Height = lineheight;
    test.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    panel1.Controls.Add(test);
}
因为我需要移动控件(通过自定义的滑动条),所以我只使用一个
标签
来显示这三个内容(我已经尝试过相互使用三个标签,结果是降低了控件移动的速度)

我知道有一种方法可以使用
MeasureString()
测量字符串宽度,但我不确定如何使用它(因为它使用
图形
类)


任何建议都非常感谢。

Pad
根据我的经验,功能只适用于单间距字体。。你所能做的就是把3个标签放在一个盒子里,然后移动盒子,这样你仍然只有一个控件可以移动哇,成功了!但我仍然好奇是否有任何方法可以使字符串的宽度相同。如果没有,我仍然想知道原因……字符串,不是真的,因为获取字符串的长度(包括字体大小)有点麻烦,你可以通过获取最大的标签宽度,然后将此宽度应用于其他标签,得到相同宽度的标签。然后可能需要将文本居中。编辑:这里有一个例子
 private string padLength(string str,int len)
{
    string tmp = str;

    for (int i = 0; i < len; i++)
    {
        if (tmp.Width != len)
        {
            tmp = tmp + " ";
        }
    }
    return tmp;
}