C# 可以让字符串保持相同的宽度吗?
我使用Winform,我有许多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
标签
列成列表视图
。
标签有三个内容在一行,我希望我可以有一些方法,让每个内容相同的宽度。
我尝试了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;
}