我使用的是Winform,我有很多Label
排队为ListView
。
标签连续三个内容,我希望我可以有一些方法让每个内容相同的宽度。
我尝试了PadRight
,但它并没有真正解决问题,如果内容是全宽,那么计算string.length
是没用的。
My Label是动态创建的,如下所示:
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);
}
和函数padLength
是我需要让字符串宽度相同的内容,如:
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;
}
因为我需要移动控件(通过自定义滑动条),我只使用一个Label
来呈现三个内容(我尝试过彼此使用三个Label,结果是降低了速度控制移动)。
我知道有一种方法可以使用MeasureString()
测量字符串宽度,但我不确定如何使用它(因为它使用Graphic
类)...... < / p>
任何建议都表示赞赏。