在Windows應用程序用下面的代碼創建了一個測試:
public void Test1()
{
List<List<String>> list = new List<List<string>>() {
new List<String>() { "XYZ", "ABC","100" },
new List<String>() { "X", "ABC", "100"},
};
string text = "", a = "", b = "", c = "";
for (int i = 0; i < list.Count; i++)
{
a = list[i][0];
b = list[i][1];
c = list[i][2];
text += String.Format("{0, -8} {1,-4} {2,8}{3}", a, b, c, Environment.NewLine);
}
MessageBox.Show(text);
}
請問你說的話,但經過與下面的代碼控制檯應用程序檢查它:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Test1();
Console.ReadKey();
}
public static void Test1()
{
List<List<String>> list = new List<List<string>>() {
new List<String>() { "XYZ", "ABC","100" },
new List<String>() { "X", "ABC", "100"},
};
string text = "", a = "", b = "", c = "";
for (int i = 0; i < list.Count; i++)
{
a = list[i][0];
b = list[i][1];
c = list[i][2];
text += String.Format("{0, -8} {1,-4} {2,8}{3}", a, b, c, Environment.NewLine);
}
Console.WriteLine(text);
}
}
}
它做什麼你的期望。
因此,測試表明如果正在做它應該做的事情,但由於MessageBox
中缺少相同寬度的字體,它不能正確排列。但另一方面,在控制檯應用程序使用相同寬度的字體的情況下,它確實排列整齊。
使用調試器找出它是否是String.Format()或MessageBox。 – 2010-07-02 18:29:38
只是一個提示(與問題無關):在編寫循環時,寧願使用StringBuilder,而不是在字符串中使用+ =(字符串是不可變的,因此+ =代價高昂),而不是這對您的情況會有很大影響。 – jdehaan 2010-07-02 18:40:36