C# Windows Form ListView mit .txt füllen, kann mir jemand helfen?
C# Listview mit .txt füllen?
Hey Leute, Bei Windows Forms c# hab ich ein Anmeldeformular erstellt, dass die Angaben in einer .txt Datei speichert. Nun weiß ich nicht, wie ich eine Listview in einer anderen Form mit diesen werten füllen kann. Die Textdatei ist so gefüllt, dass auf einer Zeile jeweils die Einträge eines vollständigen Formulars sind. Dabei sind die einzelnen Punkte mit einem Semikolon ";" getrennt. Quasi so:
Vorname;Name;Adresse;PLZ;Stadt;Tag;.Monat;Jahr;Email;Benutzername;Passwort Vorname;Name;Adresse;PLZ;Stadt;Tag;Monat;Jahr;Email;Benutzername;Passwort usw.. jeweils 1x Daten für alles pro Zeile.
Die ListView hat 8 Spalten. PLZ und Stadt sollen in eine, Passwort soll gar nicht aufgeführt werden.
Ich hoffe ihr könnt mir helfen. Ich bräuchte den gesamten Code zum einlesen der Textdatei, in meinem Fall ""Liste.txt" in die ListView "liste_daten".
1 Antwort
Hallo Pataya321,
auch wenn die Arbeit mit Datenbanken höchst wahrscheinlich effizienter sein wird, möchte ich dir trotzdem deine Frage beantworten. Vor allem weil ich damals ähnlich angefangen habe.
Grundsätzlich vorweg: Ich gebe hier keine using-Direktiven an. In Visual Studio kannst du fehlende usings ganz einfach nachträglich hinzufügen.
Du hast ja bereits gut beschrieben, wie ein Datensatz aussieht, daher zunächst die Methode, um eine Zeile Daten zu verarbeiten:
private ListViewItem GetListViewElement (string zeile)
{
// Spalte die Zeile in die einzelnen Daten auf
string[] daten = zeile.Split(';');
// Erstelle ein ListViewItem
ListViewItem lvi = new ListViewItem(daten[0]);
// daten als Tag speichern
lvi.Tag = daten;
// Füge weitere Daten für die weiteren Spalten hinzu
string[] restlicheDaten = new string[daten.length-1];
Array.Copy(daten, 1, restlicheDaten, 0, daten.lenght-2); // Minus 2, damit das Passwort nicht mit angezeigt wird.
lvi.SubItems.AddRange(restlicheDaten);
}
Als nächstes kümmern wir uns um das Einlesen der Textdatei und das Einfügen der ListViewItems in die ListView.
private void AddFileToListView(string path)
{
// Einlesen der Zeilen
string[] zeilen = File.ReadAllLines(path);
// alle Datensätze durchgehen
foreach (string zeile in zeilen)
{
liste_daten.Items.Add(GetListViewElement(zeile));
}
}
Eigentlich sollte dein Problem damit gelöst sein. Ich kann dir aber nicht versprechen, dass es funktioniert, ich habe das ganze ohne IDE geschrieben. Solltest du irgendwelche Probleme/Fragen haben oder es zu Fehlern kommen, kannst du mir gerne schreiben.
Mit freundlichen Grüßen
p.s.:
Eine Alternative zur Datenbank wäre für den Anfang eventuell auch eine XML-Datei. Einfach eine Klasse "User" erstellen und diese Serialisieren.
Das wichtigste habe ich natürlich vergessen:
Am Ende der GetListViewElement musst du noch ein
return lvi;
einfügen, ansonsten gibt die Methode nicht das ListViewItem zurück.