C# Datensammlung

Neue Frage »

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.
smile

Lg
InformaTiger
 
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
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? verwirrt

Lg
InformaTiger
Auf diesen Beitrag antworten »
Karlito

Hi,

Zitat:
Original von InformaTiger
Eine Klasse mit statischen Membern wäre eine Klasse mit statischen Variablen oder?


Genau.

Zitat:
Original von InformaTiger
Und auf statische Variablen können wircklich alle Forms zugreifen? verwirrt


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
 
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 ? Augenzwinkern

Lg
InformaTiger
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
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
 
Neue Frage »
Antworten »


Verwandte Themen