将空格添加到 WinForms 中的多列列表框
本文关键字:列表 空格 添加 WinForms | 更新日期: 2024-11-05 16:11:24
我有一个列表框,里面有两列,并以这种方式填充它:
list.Items.Add(string.Format("{0} {1}","header1","header2"));
for (int i = 0; i < column1.Count;i++)
{
list.Items.Add(string.Format("{0} {1}", column1[i], column2[i]));
}
我想做的是在其中放置空格,而不是自己做(不要使{0}和{1}之间的差距变大)。因此,根据列项的长度(列 1 是数字,列 2 是字符串),它们应该位于"header1"和"header2"字符串的中间,并且标题之间也应该有一个间隙(假设大约 10 个字符)。我知道有类似"PadRight"的东西,但不知道如何在这里使用它。这可能吗?谢谢!
PS:我不想使用列表视图
这应该看起来像:
"header1" "header2"
1 Name1
3 Name2
10 Name234
101 Name10
尝试这样的事情:
list.Items.Add(string.Format("{0,20} {1,20}","header1","header2"));
for (int i = 0; i < column1.Count;i++)
{
list.Items.Add(string.Format("{0,20} {1,20}", column1[i], column2[i]));
}
编辑(请记住,这绝不是最佳解决方案):如果您希望列中的值更接近中间值,只需向 temp 变量添加更多空格即可。
string header1 = "Header_1";
string header2 = "Header_2";
int clmnWidth = 50;
// Centered columns headers
this.listBox1.Items.Add(string.Format("|{0}|{1}|",
header1.PadLeft(clmnWidth / 2).PadRight(clmnWidth - header1.Length),
header2.PadLeft(clmnWidth / 2).PadRight(clmnWidth - header2.Length)));
string temp = " ";
for (int i = 0; i < clmn1.Length; i++)
{
this.listBox1.Items.Add(String.Format("|{0}|{1}|",
temp + clmn1[i].ToString().PadRight(clmnWidth - clmn1[i].ToString().Length - temp.Length), /*.PadLeft(clmnWidth / 2)*/
temp + clmn2[i].ToString().PadRight(clmnWidth - clmn2[i].ToString().Length - temp.Length))); /*.PadLeft(clmnWidth / 2)*/
}
另一种不使用等宽字体的方法是使用制表符:
listBox1.Items.Add(" " + column1[i] + "'t" + column2[i]);
但是,不同的控件,如DataGridView
或ListView
(甚至两个彼此相邻的ListBox
?)会更灵活,更容易调整。