2016-03-22 16 views
0

Ich habe einige Fahrzeuginformationen, die ich in einer E-Mail senden möchte. Ich habe alle Code funktioniert, aber die Informationen sind ein Problem. Jedes Fahrzeug hat eine Checkliste und diese Checkliste wird per E-Mail verschickt. Also gehe ich durch die Liste und erhalte den Fehler und den Kommentar.Wie verteilt man Informationen gleichmäßig?

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

E-Mail sieht dann wie folgt aus:

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

Ich möchte die Mängel und die Kommentare wie folgt dargestellt werden:

Defects:      Comments: 
Vehicle Secure    comment1 
Brakes      comment2 

Wie kann ich gleichmäßig Raum aus den Mängeln und die Bemerkungen?

+0

Wenn Sie eine * Form * verwenden, warum nicht ein ** Framework ** wie 'Bootstrap' verwenden? – KDOT

Antwort

2

können Sie string.Format verwenden, die automatische Polsterung unterstützt:

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

Welche Ausgänge:

hello    world 

Wenn Sie das tun, für jede Zeile, und Sie einen guten Abstand finden (20 in meinem Beispielcode), wird es dir gut gehen. Dies alles setzt die Verwendung einer Mono-Spaced-Schriftart voraus.

+0

danke für die Hilfe. Ich habe es auf eine Entfernung von 40 gesetzt, aber der erste Kommentar hat sich mehr als der zweite bewegt. Ich möchte, dass jede Zeile gerade unten ist. – user123456789

+0

Also, was ist das Problem? Ich bin mir sicher, dass du irgendwo einen Fehler gemacht hast. –

+0

Ich denke das Problem ist 'Vehicle Secure' ist länger als' Lights' also drängt es den Kommentar weiter raus. Ich möchte, dass alle Kommentare in einer Zeile stehen. – user123456789

1

Verwenden String.Format mit dem Breitenbezeichner:

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

Sie auch StringBuilder.AppendFormat, wenn die Leistung wird zu einem Problem verwenden könnten.

Wenn Sie möchten Garantie, dass die Spalten ausgerichtet sind, auch mit einem Client, der proportionale Schriftarten verwendet, dann betrachten Sie Rendern als HTML und verwenden Sie stattdessen eine <table>.

Verwandte Themen