Laden...
B
Blitzing
myCSharp.de - Member
1
Themen
1
Beiträge
Letzte Aktivität
vor 2 Jahren
Dabei seit
17.12.2022
Erstellt vor 2 Jahren

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!