2016-04-11 9 views
0

Ich dachte, es nur so einfach wäre, wieC# schreiben ComboBox Elemente auf separaten Zeilen

StringBuilder buildStrings = new StringBuilder(); 
foreach (string day in weeklyPlan.Items) 
{ 
    buildStrings.Append(day); 
    buildStrings.Append("\n"); 

} 
string pathing = @"C:\..."; 
System.IO.File.WriteAllText(pathing, buildStrings.ToString()); 

es auf die nächste Datei schreibt ganz gut, aber es schreibt sie alle auf einer Linie, so dass die Ausgabe aussieht

ich das erste Element bin ich bin das zweite Element das dritte Element

statt im, was ich für die werde ist

ich bin der erste Artikel
Ich bin das zweite Element
ich das dritte Element für

bearbeitet bin Formatierung

Antwort

0

Verwenden AppendLine statt:

StringBuilder buildStrings = new StringBuilder(); 
foreach (string day in weeklyPlan.Items) 
    buildStrings.AppendLine(day); 

string pathing = @"C:\..."; 
System.IO.File.WriteAllText(pathing, buildStrings.ToString()); 
+0

Mein Wort, das ein Headdesk einfache Reparatur war, und ich versuchte eine Tonne anderer Dinge. Meine Google-Fähigkeiten versagen mir anscheinend. Prost – HoneyPunch

+1

@HoneyPunch Keine Sorge :) Ihr Code würde funktionieren, abhängig von der Plattform. '\ r \ n' sind normalerweise die Zeichen für eine crlf in Windows. Alternativ können Sie 'Environment.NewLine' anstelle von' \ n' für denselben Effekt verwenden. – Rob

+0

Environment.NewLine war eigentlich das erste, was ich ausprobierte, als "\ n" fehlgeschlagen ist, aber es hat nicht funktioniert. Wenn ich CtrlZ ein paar Änderungen anwende, merke ich, dass ich das gesamte "buildStrings.Append (Environment.NewLine)" hatte. auskommentiert. Ich denke, es ist Zeit für eine Pause, lol. Danke agian – HoneyPunch

0

Sie .AppendLine() method of stringBuilder Class. stattdessen für .Append() verwenden können Daraus ergibt sich die Schleife kann wie folgt aussehen:

foreach (string day in weeklyPlan.Items) 
{ 
    buildStrings.AppendLine(day); 
} 

Und der Unterschied zwischen diesen beiden ist, dass

AppendLine() ihr Argument anhängen wird, von Environment.NewLine gefolgt. Wenn Sie AppendLine() nicht aufrufen, müssen Sie den Zeilenumbruch zusammen mit der angehängten Zeichenfolge wie Sie haben. aber verwenden Sie stattdessen Environment.NewLine für \n, wie Rob vorgeschlagen hat.

2

Wie wäre es mit File.WriteAllLines?

File.WriteAllLines("filepath", weeklyPlan.Items); 
+0

Dies scheint mir die beste Lösung zu sein, obwohl der zweite Parameter 'weeklyPlan.Items.Cast ()' für dieses kompilieren muss. – Enigmativity