Moin,
ich habe eine ListBox deren Inhalt aus einer txt eingelesen wird, nun möchte ich aber wenn ein bestimmter Button gedrückt wird, das dass Programm jede einzelne Zeile der txt einzelnt durch liest und nur eine bestimmte Zeile löscht.
Beispielsweise in der txt und somit auch in der ListBox sind folgende dinge genau so aufgelistet:
Objekt1
Objekt2
Objekt3
Eine TextBox enthält den Text Objekt 2.
Wenn ich jetzt einen bestimmten Button drücke soll das Objekt2 nun aus der txt gelöscht werden.
Selbiges habe ich für eine ComboBox entsprechend Programmiert und das funktioniert auch, nur bei der ListBox irgendwie nicht.
In den folgenden Codes ist das Produkt in dem fall das Objekt 2
ComboBox Code, welcher funktioniert:
//Die enstprechende txt wird eingelesen
StreamReader sr = new
StreamReader(DropDowntxt, System.Text.Encoding.Default, true);
sr.Close();
//Die enstprechende txt wird eingelesen und in die löschung.txt überschreiben, bis der Stream bei der zulöschenden Zeile angekommen ist, da schließt er sich und durch else wird Stream wieder bei der nächsten Zeile aktiviert
foreach (string line in System.IO.File.ReadAllLines(DropDowntxt))
{
//löschung.txt wird beschrieben
FileStream fs = new FileStream(löschungtxt, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
//Wenn Stream bei der zulöschenden Zeile angekommen ist schließt er sich und die Zeile wird nicht überschrieben
if (line == Produkt)
{
sw.Close();
fs.Close();
}
//Sonst wird die Zeile in die löschung.txt eingelesen und in Die enstprechende txt wieder überschrieben ohne die gelöschte Zeile
else
{
sw.WriteLine(line);
sw.Close();
fs.Close();
string[] löschungInhalt = File.ReadAllLines(löschungtxt);
File.WriteAllLines(DropDowntxt, löschungInhalt);
}
}
//DropDown Keine Auwahl wird ausgewählt
string KeineAuswahl = "Keine Auswahl";
lstDropDown.SelectedValue = KeineAuswahl;
//Eigenschaftsfenster
lstEigenschaften.Items.Clear();
//Das gelöschte Produkt wird in der DropDown gelöscht
lstDropDown.Items.Remove(Produkt);
//Der Zwischen Speicher wird gelöscht
File.Delete(löschungtxt);
}
ListBox Code welche nicht funktioniert:
//Die enstprechende txt wird eingelesen
StreamReader sr3 = new
StreamReader(MOtxt, System.Text.Encoding.Default, true);
sr3.Close();
//Die enstprechende txt wird eingelesen und in die löschung.txt überschreiben, bis der Stream bei der zulöschenden Zeile angekommen ist, da schließt er sich und durch else wird Stream wieder bei der nächsten Zeile aktiviert
foreach (string line in System.IO.File.ReadAllLines(MOtxt))
{
//löschung.txt wird beschrieben
FileStream fs = new FileStream(löschungtxt, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
//Wenn Stream bei der zulöschenden Zeile angekommen ist schließt er sich und die Zeile wird nicht überschrieben
if (line == Produkt)
{
sw.Close();
fs.Close();
}
//Sonst wird die Zeile in die löschung.txt eingelesen und in Die enstprechende txt wieder überschrieben ohne die gelöschte Zeile
else
{
sw.WriteLine(line);
sw.Close();
fs.Close();
string[] löschungInhalt = File.ReadAllLines(löschungtxt);
File.WriteAllLines(MOtxt, löschungInhalt);
//Die lst wird aktualisiert
Orange = 0;
lstMeldungenOrange.Items.Clear();
foreach (string Inhalt in File.ReadLines(MOtxt))
{
lstMeldungenOrange.Items.Add(Inhalt);
Orange++;
}
string OrangeZahl = Convert.ToString(Orange);
string[] FarbenInhalt = File.ReadAllLines(Farbentxt);
File.WriteAllText(Farbentxt, FarbenInhalt[0] + Environment.NewLine + OrangeZahl + Environment.NewLine + FarbenInhalt[2]);
lblOrange.Content = OrangeZahl;
}
lstMeldungenOrange.Items.Remove(Produkt);
File.Delete(löschungtxt);
sw.Close();
fs.Close();
}
Ich wäre für jegliche Hilfe dankbar!