C# Datensammlung |
14.03.2013, 19:24 | Auf diesen Beitrag antworten » | ||||
InformaTiger | C# Datensammlung Hallo, gibt es eine Möglichkeit, mehrere Variablen in einem Programm für alle Windows Forms zugänglich zu machen? Danke schon mal im voraus. Lg InformaTiger |
||||
|
|||||
14.03.2013, 21:17 | Auf diesen Beitrag antworten » | ||||
Karlito | Hallo, 2 (ausgewählte) Möglichkeiten. Eine Klasse mit nur statischen Membern, auf die du zugreifst oder eine Klasse, die das Singleton-Pattern implementiert. Das Singleton-Pattern stellt sicher, dass es nur eine Instanz (ein Objekt) von der Klasse geben kann. Dort kannst du dann deine Daten ablegen und zwischen den Objekten austauschen. Nur wenn du mit mehreren Threads arbeitest, könnte es zu seltsamen verhalten kommen. VG, Karlito |
||||
14.03.2013, 22:35 | Auf diesen Beitrag antworten » | ||||
InformaTiger | Ich glaube ich bevorzuge hier Variante 1. Eine Klasse mit statischen Membern wäre eine Klasse mit statischen Variablen oder? Und auf statische Variablen können wircklich alle Forms zugreifen? Lg InformaTiger |
||||
14.03.2013, 23:04 | Auf diesen Beitrag antworten » | ||||
Karlito | Hi,
Genau.
Ja. Jedoch müssen die Variablen nicht statisch sein, damit alle darauf zugreifen können. Die Sichtbarkeit "public" muss gegeben sein. Man könnte auch ein Objekt erzeugen und dieses allen Forms bekannt machen. Damit hätten auch alle Forms Zugriff auf "den gemeinamen Speicher". Du hättest so auch den Vorteil, dass du den gemeinsamen Speicher austauschen, indem Du den Forms einfach ein neues Objekt bekannt machst... Das ist am Anfang ein wenig schwer zu verstehen. Ist es klar oder soll ich mal ein Beispiel machen? VG, Karlito |
||||
Anzeige | |||||
|
|||||
15.03.2013, 16:09 | Auf diesen Beitrag antworten » | ||||
InformaTiger | Ich glaube schon dass ich es verstanden habe. Mit einem Beispiel wäre ich mir allerdings sicherer. Und kann ich diese Klasse im Progam.cs anlegen oder in der Form1.cs ? Lg InformaTiger |
||||
15.03.2013, 17:47 | Auf diesen Beitrag antworten » | ||||
Karlito | Hi, per Konvention sollte man für jede Klasse eine neue Datei anlegen. Das macht die Sache auch wesentlich übersichtlicher. Das Beispiel muss ich mir erst einfallen lassen... Weis nicht ob ich das heute abend schaffe. Edit: Im Prinzip kann man in C# aber auch alle Klassen in einer Datei definieren... VG, Karlito |
||||
17.03.2013, 17:15 | Auf diesen Beitrag antworten » | ||||
Karlito | Hier noch das Beispiel: das Kleine Programm beinhaltet eine Main-Form und eine Subform. Alle Forms holen sich beim laden vom Store-Manager einen Sharedstore. Wie du siehst wird da immer das selbe Objekt zurückgegeben. (Das ist fast wie Singleton). Wenn du Subforms öffnest (Button "Create Window") dann erhältst du unterfenster. Wenn du jetzt den Text in einem der Fenster änderst, dann wird der Text in allen Fenstern angepasst. Stell dir vor es gäbe noch ein Ereignis, welches mitteilt, dass der Store sich geändert hat. Die Forms könnten sich dann ein neues Store-Objekt vom Store-Manager abholen und du könntest den Speicher quasi unter den Forms weg austauschen. Verständlich? VG, Karlito |
|