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

Row-like string with even spacing in between values

我正在尝试向列表框添加多行和不同的部分,并且需要使用“\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"));

只是一个示例行。

结果看起来像:(没有点)

Mary.......Sue................778-435-2321.....Accounting.....Annual Salary: ,000.00 Trevor....Joseph...........604-894-2902.....Marketing.......Annual Salary: ,000.00 Steve......Collin.............778-234-5432.....Finance..........Annual Salary: ,500.00 George...........Watson..........604-910-2349.....Technical.......Annual Salary: ,000.00 Sally.......Henderson.....604-654-2325.....Sales..............Annual Salary: ,000.00 Jenny.....Motgomery.....604-692-4932.....Data Ana.......Annual Salary: ,000.00

任何人都可以解释为什么它显示不正常,我该如何解决这个问题? 我在网上搜索过,但找不到任何使用 \t 进行布局的结果。

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

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);

您的问题的答案是,您使用的标签假设它们会为您填充 space,但它们不会。您需要使用

的高级功能

string.Format or string.Pad

完整答案可在此处找到:Formatting a C# string with identical spacing in between values