2016-03-22 2 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); 
     } 

Email будет выглядеть следующим образом:

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

Если вы используете * форму *, то почему бы не использовать ** framework **, как '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> вместо этого.

Смежные вопросы