Laden...

Objekt über mehrere Forms verwenden

Erstellt von Wuz vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.928 Views
Thema geschlossen
W
Wuz Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren
Objekt über mehrere Forms verwenden

Hallo liebe Community,

ich bin leider noch ein recht unerfahrener C#-Entwickler, deswegen glaube ich auch, dass das Problem recht trivial ist.

Mein Problem besteht darin, dass ich zwei verschiedene Forms habe. In der ersten Form erzeuge ich ein Objekt der Klasse Speicher, welches ich in Form 1 auch logischerweise komplett verwenden kann. Jetzt möchte ich, dass ich, wenn ich Form 2 erzeuge und anzeigen lasse, dieses Objekt auch verwendet werden kann. Wichtig dabei ist, dass alles, was ich an diesem Objekt verändere, übernommen werden muss, d.h. Veränderungen am Objekt in Form 2 muss sich auch auf Form 1 beziehen.

So meine Lösung war, dass ich beim erzeugen der Form 2 einfach das Objekt mit dem Schlüsselwort "ref" übergebe. Das klappt auch soweit. Jetzt möchte ich jedoch Teile des Objekts beim Klick auf einen Button verändern. Das einfachste wäre natürlich, der Button-Click-Methode das referentierte Objekt zu übergeben. Jedoch bekomme ich diesen Fehler:> Fehlermeldung:

Fehler 1 Keine Überladung für "txt_5erbestand_TextChanged" stimmt mit dem Delegaten "System.EventHandler" überein. k:\Eigene Dateien\Abteilungen\SBKE\Projekte\AKT_Simulation\AKT_Simulation\Kasetten.Designer.cs 125 48 AKT_Simulation

Ich habe mich selbst schon schlau gemacht, dass ich so einer Methode wohl nur die beiden Werte übergeben kann. Aber gibt es denn dann eine Möglichkeit, dass ich trotzdem in dieser Methode das Objekt verwenden und ggf. auch verändern kann?

Vielen Dank schonmal für eure Hilfe 😃

Gruß.
Wuz

S
269 Beiträge seit 2010
vor 10 Jahren

Du müsstest in deiner Form 2 eine Membervariable bereit halten, in welcher du dein Custom Objekt speicherst.
Auf diese kannst du dann aus dem normalen Click-EventHandler wieder zugreifen und so Änderungen an deinem Objekt vornehmen.

Da dein Objekt, wenn kein Struct sondern eine Class, automatisch ein Referenztyp ist, kannst du auf das ref-Schlüsselwort übrigens verzichten 😉

Zusätzlich: MrSparke hat noch ein paar sehr gute Links zu dem Thema dagelassen 😃

Beachte bitte:
Das gehört zu Grundlagen und wird somit von [Hinweis] Wie poste ich richtig? Punkt 1.1.1 (und 1.1) abgedeckt.

W
Wuz Themenstarter:in
2 Beiträge seit 2013
vor 10 Jahren

Meinst du, dass ich in der Form2 ein Member, also eine interne Variable (?!?) erzeuge, in der ich dann das übergebene Objekt speichere und dann auf das erzeugte Objekt zugreife?
Dann hab ich aber doch das Problem, dass nur eine Kopie des Objekts, nämlich die Membervariable, verändert wird und nicht das Objekt, welches ich übergeben habe.

S
269 Beiträge seit 2010
vor 10 Jahren

Du solltest dir ganz dringend noch einmal ansehen, was ein Referenztyp ist 😉

Solange du nicht explizit eine Kopie anlegst, wirst du immer* das Original verändern.

*Mit vorsicht zu genießen, denn teilweise kann es anders sein (siehe string, und den ersten von MrSparkle geposteten Link)

Hinweis von herbivore vor 10 Jahren

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1. Bitte eigene dir selbst die Grundlagen an, dann stellen sich solche und ähnliche Fragen gar nicht erst.

Thema geschlossen