C# Daten einer Combobox speichern

gEexTaH

Lt. Commander
Registriert
Sep. 2003
Beiträge
1.100
Daten einer Combobox speichern und lesen

Hallo zusammen,

ich sitze im Moment an einem kleinen Problem und weiß noch nicht so ganz, wie ich es lösen soll. Eigentlich ist es ganz einfach, ich möchte Daten die ich in einer Combobox eingebe speichern, sodass sie nach dem beenden gespeichert und nach dem erneuten starten wieder geladen werden.

Ich habe versucht das ganze mit einer XML-Datei zu realisieren, doch leider funktioniert es nicht wirklich. Die Daten der XML-Datei werden zwar gelesen, doch wird nichts geschrieben.

Später müsste ich aus der XML-Datei auch noch Einträge gezielt auslesen, nicht alle auf einmal. Wie muss ich die Abfrage dort genau gestalten?

Code-Snippet

Code:
private void Form1_Load(object sender, EventArgs e)
        {
            XmlTextReader xtr = null;
            string fileName = "stream.xml";

            try
            {
                xtr = new XmlTextReader(fileName);
                xtr.WhitespaceHandling = WhitespaceHandling.None;

                while (xtr.Read())
                {
                    switch (xtr.NodeType)
                    {
                        case XmlNodeType.Text:
                            this.cboURL.Items.Add(xtr.Value);
                            break;
                    }
                }

                this.cboURL.SelectedIndex = 0;
            }
            finally
            {
                if (xtr != null)
                    xtr.Close();
            }
        }
        private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            XmlTextWriter xtw = null;
            string fileName = "stream.xml";

            try
            {
                xtw = new XmlTextWriter(fileName, Encoding.UTF8);
                xtw.Formatting = Formatting.Indented;

                xtw.WriteStartDocument();
                xtw.WriteStartElement("streams/stream");

                for (int i = 0; i < this.cboURL.Items.Count; i++)
                {
                    xtw.WriteElementString("streams/stream", (string)this.cboURL.Items[i]);
                }

                xtw.WriteEndElement();
                xtw.WriteEndDocument();
            }
            finally
            {
                if (xtw != null)
                    xtw.Close();
            }
        }
        private void btnstart_Click(object sender, EventArgs e)
        {
            string NewItem = this.cboURL.Text;

            if (NewItem == "")
                return;
            if (this.cboURL.FindStringExact(NewItem) > 0)
            {
                MessageBox.Show(NewItem + "existiert bereits in der Liste und wird nicht hinzugefügt.");
                return;
            }
            this.cboURL.Items.Add(NewItem);     
        }
XML-File
Code:
<?xml version="1.0" encoding="utf-8" ?>
<streams>
  <stream>1Live</stream>
 </streams>
In der XML File würde ich die Daten gerne so speichern, dass sie dann wie folgt aussehen: "Name - URL" > "1Live - http://www.wdr.de/wdrlive/media/einslive-wm32.asx"

Ich hoffe ihr habt einen Rat für mich, wo der Fehler liegt und vor allem, wie ich ein bisschen weiter komme.

Schon mal danke für eure Hilfe :-)
 
Zuletzt bearbeitet: (Titel etwas erweitert, da ich ja nicht nur speichern, sondern auch lesen möchte.)
Okay danke, dann werde ich mal gucken, was ich mit dem Thread anfangen kann.
 
Zurück
Oben