Autor Beitrag
matze94
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 17.09.10 19:46 
ich hab einen vb code zu diesen funktionen gefunden und in c# über setzt blos funktioniert es nicht. es kommt beim löschen und beim einlesen die fehlermeldung:
"Die Items-Auflistung kann nicht geändert werden, wenn die DataSource-Eigenschaft festgelegt ist."

hier ist mal der entsprechende ausschnitt.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
        public void ListBox_Save(ListBox ListBox, string sFile)
        {

            // Inhalt einer ListBox speichern
            System.IO.StreamWriter oStream = null;
            short i = 0;

            oStream = new System.IO.StreamWriter(sFile);

            for (i = 0; i <= ListBox.Items.Count - 1; i++)
            {
                oStream.WriteLine(ListBox.Items);
            }
            oStream.Close();
        }

        public void ListBox_Read(ListBox ListBox, string sFile)
        {

            // Inhalt einer ListBox speichern
            System.IO.StreamReader oStream = null;
            string sLine = null;

            // ListBox löschen
            ListBox.Items.Clear();
                      
            // Existsiert die Datei?
            System.IO.FileInfo oFile = new System.IO.FileInfo(sFile);

            if (oFile.Exists == true)
            {
                oStream = new System.IO.StreamReader(sFile);
                // Datei zeilenweise auslesen
                do
                {
                    sLine = oStream.ReadLine();
                    if ((sLine == null))
                        break// TODO: might not be correct. Was : Exit Do
                    ListBox.Items.Add(sLine);
                } while (true);
                oStream.Close();
            }
        }

        private void button12_Click(object sender, EventArgs e)
        {
      // ListBox speichern
      string sFile = null;

      sFile = Application.StartupPath + "\\Liste.dat";
        ListBox_Save(listBox1, sFile);
        }

        private void button13_Click(object sender, EventArgs e)
        {
            // Inhalt der ListBox löschen
            ListBox.Items.Clear();
        }

        private void button14_Click(object sender, EventArgs e)
        {
            // ListBox einlesen
            string sFile = null;
            sFile = Application.StartupPath + "\\Liste.dat";
            ListBox_Read(listBox1, sFile);
        }



Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 17.09.2010 um 19:48
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 17.09.10 20:34 
Schau mal im Eigenschaftsfenster, ob die DataSource-Eigenschaft tatsächlich festgelegt ist. Ist dem so, solltest du den Verweis entfernen. Natürlich darf auch nirgends im Code die Eigenschaft gesetzt werden.

Für diesen Beitrag haben gedankt: matze94
matze94 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Sa 18.09.10 14:05 
danke die funktion die einträge in die listbox erstellt hat, bzw. die die sie entfernt hat hatten eine data source eigenschaft ich hab die funktionen rausgelassen, auch aus anderen grund
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 18.09.10 17:01 
Ist das Problem jetzt gelöst oder nicht? :gruebel:

Wenn nicht, hast du wirklich alle Verweise auf DataSource entfernt? Benutze sicherheitshalber mal die Suche in Dateien von Visual Studio.
matze94 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Sa 18.09.10 17:32 
das einlesen von eigenen dateien klappt

das löschen bedingt, d.h. nicht mit eingelesen itemen, liegts vielleicht am code?
ausblenden C#-Quelltext
1:
listBox1.DataSource = null;					

somit konnte ich das data sourche problem umgehen

das einzige problem ist das speichern, es erzeugt zwar eine datei doch steht nur
Zitat:
System.Windows.Forms.ListBox+ObjectCollection

drin und zwar so viel mal wie iteme in der list box sind also sind drei iteme drinnen speichert er dreimal diesen code

hier mal der code ders speichern soll

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
            // ListBox speichern
            //string sFile = null;
            string sFile = Application.StartupPath + "\\Liste.xml";
            //ListBox_Save(listBox1, sFile);
            // Inhalt einer ListBox speichern
            System.IO.StreamWriter oStream = null;
            int i = 0;

            oStream = new System.IO.StreamWriter(sFile);
            
            while(i < listBox1.Items.Count)
            {
                oStream.WriteLine(listBox1.Items[i]);
                i = i + 1 ;
            }
            oStream.Close();


Zuletzt bearbeitet von matze94 am Sa 18.09.10 18:55, insgesamt 1-mal bearbeitet
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 18.09.10 18:28 
user profile iconmatze94 hat folgendes geschrieben Zum zitierten Posting springen:
das einlesen von eigenen dateien klappt

das löschen bedingt, d.h. nicht mit eingelesen itemen, liegts vielleicht am code?
ausblenden C#-Quelltext
1:
listBox1.DataSource = null;					

somit konnte ich das data sourche problem umgehen

Naja - brauchst du jetzt eine DataSource oder nicht? Wenn du keine brauchst, solltest du einfach alles, was mit ihr zu tun hat, löschen. Sonst solltest du mit der Datenquelle anstatt der ListBox arbeiten.

user profile iconmatze94 hat folgendes geschrieben Zum zitierten Posting springen:
das einzige problem ist das speichern, es erzeugt zwar eine datei doch steht nur
Zitat:
System.Windows.Forms.ListBox+ObjectCollection

drin und zwar so viel mal wie iteme in der list box sind also sind drei iteme drinnen speichert er dreimal diesen code

hier mal der code ders speichern soll

Das war zwar nicht der richtige, aber oben hast du ihn ja gepostet ;)

Der Fehler dort ist mir vorher noch gar nicht aufgefallen:
user profile iconmatze94 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
10:
11:
12:
13:
/* ... */
            for (i = 0; i <= ListBox.Items.Count - 1; i++)
            {
                oStream.WriteLine(ListBox.Items);
            }

Muss natürlich ListBox.Items[i] heißen.

Für diesen Beitrag haben gedankt: matze94
matze94 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Sa 18.09.10 18:56 
ich hab jetzt den code oben ausgetauscht (in richtiger fassung) und er funktioniert, so wie ich es will!
vielen dank, tolles forum
CityHunter
Hält's aus hier
Beiträge: 12

Win8
C# (VS 2010)
BeitragVerfasst: So 29.04.12 14:04 
Hallo,

ich arbeite an sowas gleiches leider kriege ich das nicht hin es in einer XML datei die Werte aus der ListBox zu speichern.

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
void ListeSpeichern()
        {            
            // den Dateinamen aus dem Pfad zusammenbauen
            xmlDateiname = System.IO.Path.ChangeExtension(Application.ExecutablePath, ".xml");
            // Pürfen, ob es die Datei bereits gibt
            xmlVorhanden = System.IO.File.Exists(xmlDateiname);
            // die Einstellungen setzen
            XmlWriterSettings einstellungen = new XmlWriterSettings();
            einstellungen.Indent = true;
            // eine Instanz für XmlWriter erzeugen
            XmlWriter xmlSchreiben = XmlWriter.Create(xmlDateiname, einstellungen);
            // die Deklaration schreiben
            xmlSchreiben.WriteStartDocument();
            // den Wurzelknoten bestenliste erzeugen
            xmlSchreiben.WriteStartElement("ListenBox");
            // ListBox Anzahl
            for (int i = 0; i < listBox1.Items.Count - 1; i++)
            {
                // den Knoten eintrag erzeugen
                xmlSchreiben.WriteStartElement("eintrag");
                // die Einträge schreiben
                xmlSchreiben.WriteElementString("Eingabefeld",listBox1.SelectedItems.ToString());
                // den Knoten abschließen
                xmlSchreiben.WriteEndElement();
            }

            // alle abschließen
            xmlSchreiben.WriteEndDocument();
            // Datei schließen
            xmlSchreiben.Close();
            
        }


Hoffe mir kann da einer weiter helfen.

Wünsche euch ein schönen Feiertag.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 29.04.12 20:22 
Hallo CityHunter :welcome:

hast du auch die markierte Anmerkung von Yogu hier in diesem Beitrag gelesen?

P.S: Beim nächsten Mal eröffne besser einen eigenen Beitrag (und verweise evtl. auf einen anderen), damit sich die Antworten nicht vermischen.
CityHunter
Hält's aus hier
Beiträge: 12

Win8
C# (VS 2010)
BeitragVerfasst: So 29.04.12 20:52 
Ja habe ich. Naja jedes mal wenn ich irgend wo im Forum was neues aufmache wird es gelöscht weil das schon gibt in einer abgewanden Form. Ja habe das mit [i] Probiert aber keine ahnung vielleicht habe ich ja auch ein Logik fehler drin. Die sind ja bissel schwerer zufinden als ein Syntax fehler ^^

Moderiert von user profile iconTh69: Full-Quote entfernt.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 30.04.12 13:06 
Was mir noch auffällt ist, dass du das Element "ListenBox" öffnest (Zeile 15), aber nicht schließst (sollte vor WriteEndDocument passieren). Wenn das auch nicht hilft, solltest du uns auf jeden Fall sagen, was genau nicht funktioniert (Compilerfehler? Exception? Unerwartetes Verhalten?)