C# 值之间具有均匀间距的类似行的字符串

C# 值之间具有均匀间距的类似行的字符串,c#,layout,listbox,C#,Layout,Listbox,我正在尝试向列表框添加多行和不同部分,并且需要使用“\t”来创建布局 listBox.Items.Add(emp[index].first + "\t\t" + emp[index].last + "\t\t" + emp[index].number + "\t\t" + emp[index].department + "\t\t" + "Annual Salary: " + (emp[index].annualSalary).ToString("c") + ", Annual Bonus: "

我正在尝试向列表框添加多行和不同部分,并且需要使用“\t”来创建布局

listBox.Items.Add(emp[index].first + "\t\t" + emp[index].last + "\t\t" + emp[index].number + "\t\t" + emp[index].department + "\t\t" + "Annual Salary: " + (emp[index].annualSalary).ToString("c") + ", Annual Bonus: " + (emp[index].annualBonus).ToString("c"));
只举一行例子

它看起来像:(没有点)

玛丽……苏……778-435-2321……会计……年薪:33000.00美元 特雷弗……约瑟夫……604-894-2902……营销……年薪:$52000.00 史蒂夫……科林…………778-234-5432…………财务…………年薪:48500.00美元 乔治·沃森604-910-2349技术人员年薪:25000.00美元 莎莉……亨德森……604-654-2325……销售…………年薪:$12000.00 Jenny…..Motgomery…..604-692-4932…..数据分析…..年薪:$12000.00

有人能解释为什么它显示出所有的不稳定,以及我如何修复它吗?
我已在线搜索,但使用\t for layout找不到任何结果。

首先,我强烈建议使用模式,而不是使用加号连接字符串。这将帮助您更清楚地看到事情:

string pattern = string.Format("{0}\t\t{1}\t\t{2}\t\t{3}\t\tAnnualSalary: {4}, Annual Bonus: {5}", 
emp[index].first, 
emp[index].last, 
emp[index].number,
emp[index].department, 
emp[index].annualSalary).ToString("c"),
emp[index].annualBonus);
您的问题的答案是,您使用的选项卡假定它们会为您填充空间,但它们不会。您需要使用的高级功能

string.Format或string.Pad


完整的答案可以在这里找到:

乔治是个大块头。您永远都不可能完全正确,避免使用View=Details的ListView是没有意义的。