Wie speichere ich Daten aus C# in einer TXT-Datei?
-
21-12-2019 - |
Frage
Ich bin neu im Programmieren und stehe vor einigen Schwierigkeiten.Ich hoffe, die von mir generierten Daten (ein WPF) zu speichern DataGrid
) in eine Textdatei.
Folgendes habe ich derzeit:
MainWindow.xaml.cs:
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
string fileName = @"D:\projects\PersonInfos\Files\PersonInfos_Copy.txt";
PersonInfosTable.ConvertToTXTFile(fileName);
}
PersonInfosTable.cs:
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = null;
Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
if (PersonInfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
StreamWriter file = new StreamWriter(fileName);
file.WriteLine(sb);
file.Close();
}
}
}
Leider funktioniert das nicht. PersonInfosDetails
ist vom Typ ObservationCollections<T>
Und SelectCheckBox
ist das vom Benutzer ausgewählte Kontrollkästchen und gibt an, welche Dateien der Benutzer speichern möchte.
Irgendwelche Ideen oder Vorschläge?Ich würde mich sehr über Ihre Hilfe freuen und danke Ihnen vielmals für Ihre Zeit!
Lösung
Es ist nicht klar, was die SelectCheckBox-Eigenschaft ist.Allerdings müssen Sie den schreibenden Teil Ihres Programms außerhalb der Schleife verschieben.Fügen Sie innerhalb der Schleife einfach alle Personeninformationen zu Ihrer StringBuilder-Instanz hinzu.
public void ConvertToTXTFile(string fileName)
{
StringBuilder sb = new StringBuilder();
System.Text.Encoding Output = System.Text.Encoding.Default;
foreach (PersonInfos personinfos in PersonInfoDetails)
{
// Collect every personinfos selected in the stringbuilder
if (personinfos.SelectCheckBox == true)
{
string line = String.Format("L§" + personinfos.FirstName + "§" + personinfos.LastName + "§");
sb.AppendLine(line);
}
}
// Now write the content of the StringBuilder all together to the output file
File.WriteAllText(filename, sb.ToString())
}
Andere Tipps
Hast du es versucht Wie man:In eine Textdatei schreiben (C#-Programmierhandbuch)?
Außerdem funktioniert der von Ihnen angegebene Code nur, wenn SelectCheckBox
ist eine statische Eigenschaft von PersonInfos
Klasse.Du wirst wahrscheinlich das ändern müssen if
Aussage zu
if (personInfos.SelectCheckBox == true)
{
// ...
}