Autor Beitrag
Jamez
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 09.12.09 14:09 
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:


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 10.12.09 23:32 
Das sollte über die Items-Eigenschaft gehen, also z.B. checkedlistBox1.Items[3].

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".