Entwickler-Ecke

Basistechnologien - Checklistbox --- Objekte dauerhaft hinzufügen/entfernen


Jamez - Mi 09.12.09 14:09
Titel: Checklistbox --- Objekte dauerhaft hinzufügen/entfernen
Wie ich dauerhaft ein Objekt zur Checklistbox hinzufügen kann, wenn das Programm bereits erstellt ist ? ( Gibt es z.B. einen Befehl alle gespeicherten Variablen beizubehalten, auch wenn das Programm beendet wird ? )

Benutze momentan folgendes um temporär ( bis zur Beendigung des Programms) Objekte hinzuzufügen:



C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
private void button1_Click(object sender, EventArgs e)
        {
            string Test = textBox1.Text;

            checkedListBox1.Items.AddRange(new object[] 
            {
                Test
            }
            );
        }


habe mir aber überlegt die Variablen der checkedListBox1 in einer Textdatei zu speichern und sobald ich einen Knopf drücke, werden die Variablen aus einer Test.text geladen und in die checkedlistBox1 integriert, dazu müsste ich aber wissen, wie ich ein Objekt/Variable aus der checkedlistbox wieder entferne


wenn ich z.B.

Test1,
Test2,
Test3,
Test4 habe, wie lautet der Befehl um Test3 aus der CheckedListBox1 zu entfernen ?




Freue mich schon auf eure Antworten.

mfG


danielf - Mi 09.12.09 15:53

Hallo,

das ist der richtige Ansatz.

1) Objekte statisch bei der Initialisierung (oder wie bei dir beim Click-Event) füllen oder
2) Abgespeicherte Objekte laden.

Für den zweiten Lösungsansatz gibt es verschiedene Implementierungen. Zum einen kannst den String jedes Objektes in eine Datei schrieben und später wieder laden. Dies geht sehr einfach. Nachteil hierbei, wenn du mehr als nur einen String speichern willst musst du mehr Aufwand machen. Alternativ kannst du auch die Objekte De-/Serialisieren. Das ist eine Methode mit der du ein Objekt permanent machen kannst.

Welche Lösung du verwenden willst, liegt an der Struktur der Daten. Wenn es nur String sind, würde ich keinen Aufwand machen und die einfach Zeilenwiese wegschreiben und nachher laden.

Gruß Daniel


Jamez - Mi 09.12.09 17:43

De-/Serialisieren sagt mir nichts ^^.

Gut dann werde ich heute Abend nach der Arbeit mal alles in Textdateien speichern, sind ja immerhin nur 6-7 Wörter also nichts großes, denke auch mal eine Datenbank dafür anzulegen wäre schwachsinnig ( wobei es sicherlich interessant ist, damit ich mal sehe wie sie funktioniert)


Wie lade ich ein Objekt denn beim Starten ?


OnScriptLoad ? oder wie lautet der genaue Befehl ( so bin erstmal arbeiten, wäre super wenn mir einer die Antwort nennen könnte, dann muss ich heute Abend nicht solange suchen ^^)


mfG und vielen Dank


JüTho - Mi 09.12.09 17:48

Bei Textdateien am einfachsten mit File.ReadAllLines in ein String-Array oder mit File.ReadAllText in einen langen String, den du dann selbst aufteilen musst. Zum Speichern natürlich umgekehrt: zuerst alle Informationen sammeln in einem langen String oder in einem String-Array, dann mit File.WriteXxx speichern.

Eine Alternative wären config-Dateien nach dem NET-Muster, siehe z.B. Configuration.AppSettings. Aber das ist vermutlich wirklich besser, das als nächstes zu versuchen, und im dritten Schritt De-/Serialisierung.

Gruß Jürgen


Jamez - Do 10.12.09 23:04

Gibt es eine Möglichkeit bei der Checkedlistbox auf das erste Objekt, zweite Objekt usw. zuzugreifen ?


Wenn z.B. in der CheckedlistBox folgendes steht:


Test,
Test1,
Test2,
Test3,
Test4,
...


und ich möchte gerne das Objekt Test 3 haben, kann ich darauf auch ohne Namen ( zugreifen ?)

Hatte an CheckedlistBox1.Object3 oder so gedacht ^^


Christian S. - Do 10.12.09 23:32

Das sollte über die Items-Eigenschaft gehen, also z.B. checkedlistBox1.Items[3].