2016-03-22 34 views
0

我有一些我想通過電子郵件發送的車輛信息。 我有所有的代碼工作,但間隔出來的信息是一個問題。每輛車都有一個清單,然後清單將通過電子郵件發送。所以我循環查看列表並獲取缺陷和評論。如何均勻隔開信息?

foreach (var item in chkList.CheckItems) 
     { 
      if (item.Defect == true) 
      { 
       defect += item.ItemTitle + " " + item.Comment + "\n"; 
      } 
     } 

     if (hasDefect == true) 
     { 
      Utils.ChecklistSendMail("Checklist", ToAddresses.Split(';'), 
       "Vehicle Reg: " + reg + "\n" + 
       "Checklist No: " + chkList.CheckListNo + "\n"+ 
       "Date: " + ChecklistDate.ToShortDateString() + "\n" + 
       "Defects:       Comments: " + "\n" + 
       defect); 
     } 

電子郵件則是這樣的:

Vehicle Reg: XLZ 8194 
Checklist No: 0 
Date: 22/03/2016 
Defects:       Comments: 
Vehicle Secure comment1 
Brakes comment2 

我要顯示這樣的缺陷和評論:

Defects:      Comments: 
Vehicle Secure    comment1 
Brakes      comment2 

我如何均勻地間隔開出的缺陷和註釋?

+0

如果你使用* form *那麼爲什麼不使用像'bootstrap'這樣的**框架**? – KDOT

回答

2

您可以使用string.Format支持自動填補:

string s = string.Format("{0,-20}{1}", "hello", "world"); 

,輸出:

hello    world 

如果你這樣做的每一行,你會發現在我的樣本代碼的好距離(20 ), 你會好起來的。這一切都假定使用單間隔字體。

+0

感謝您的幫助。我把它設置爲40的距離,但第一個評論已經超過了第二個。我希望每一行都是筆直的 – user123456789

+0

那麼,這是什麼問題?我相信你在某個地方犯了一個錯誤。 –

+0

我認爲問題在於'Vehicle Secure'比'Lights'更長,所以它會將評論進一步推送出去。我想要所有的評論排隊 – user123456789

1

使用String.Format指定寬度:

if (item.Defect == true) 
{ 
    defect += string.Format("{0,-20} {1,-10}\n", item.ItemTitle, item.Comment); 
} 

你也可以使用StringBuilder.AppendFormat如果性能成爲一個問題。

如果你想保證的列排列,即使使用比例字體客戶端,然後再考慮渲染HTML和使用<table>代替。