C# Datensammlung |
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
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
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
14.03.2013 19:24 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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 21:17 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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?
|
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
|
|
14.03.2013 23:04 |
|
|
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
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
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
15.03.2013 16:09 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
15.03.2013 17:47 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
17.03.2013 17:15 |
|
|
|