Eine UserControl Instanz in mehreren Form

yesso

Mitglied
hallo,

bin z.z. einem uni-projekt dran und muss feststellen, dass nicht immer alles simpel ist was wir machen, da es in den foren keine lösung dazu gibt...

entwicklungsumgebung: vs.net 2003 c#
ich habe ein usercontrol mit einer toolBar mit knöppen und darunter einem treeview.

die applikation startet mit form1, erzeugt dabei eine instanz meines usercontrols und zeigt es an. auf klick auf einen button in der toolBar öffnet sich form2 modal, welche auch dieses usercontrol (und noch andere steuerelem. ) anzeigen soll, aber eben genau die instanz aus form1 und nicht eine neue instanz meines usercontrols.

dann würde ich im usercontrol ín der form2 veränderungen vornehmen, z.b. einen neuen knoten hinzufügen....und zu guterletzt auch wieder zur form1 zurück wechseln und dabei sollen natürlich die veränderungen aus form2 nicht verloren gehen sondern in dem usercontrol in form1 aktualisiert werden...

zusammengefasst:
ich habe ein usercontrol wovon es in der applikation nur eine instanz geben soll, die jeweils in form1 oder form2 angezeigt und verändert wird und dabei halt immer aktuell bleibt...

ich überlege ob das mit einem singelton gehen würde oder ob .net da auch schon dran gedacht und etwas trickhaftes eingebaut hat wieder...
 
Ich persönlich würde es auch mit dem Singleton-Pattern, wie du ja auch schon gedacht hast, machen.

Dafür ist es ja eigentlich da :)

Natürlich könntest du auch einfach Form2 die Referenz auf das UC von Form1 mit übergeben..
 
ich hab jetzt mal folgendes versucht:

der aufruf der form2 erfolgt ja aus dem button der toolbar in dem usercontrol selbst, d.h. bei klick auf diesen button habe ich versucht "this", also die usercontrol der form2 mitzugeben, nur verschwindet es dann aus der form1 (wird nicht mehr angezeigt)...

dann hab ich die instanz des usercontrols in form1 "static" deklariert und "add()" sie der form2 einfach zu, aber auch hier verschwindet es aus der form1...?

was passiert da
beim singelton wird wohl dasselbe passieren oder?
hat jemand eine lösung?

danke
 
Ein Control kann immer nur eine Form haben die es kontrolliert.
Es kann also immer nur in einer Control-Collection gleichzeit sein bzw. einen Wert in seiner ParentForm-Eigenschaft haben.

Wenn es bei beiden gleichzeitig angezeigt werden soll, könntest du vllt die Werte des Usercontrols einzeln, statisch abspeichern oder der neuen Instanz des Controls die selben Wert zuweisen. Bei der Änderung eines Wertes oder beim Schließen der Form wird dann auto. die andere Instanz aktualisiert..
 
alles klar!

habs jetzt so gelöst das jede form eine eigene instanz von meiner usercontrol hat und beim wechseln zwischen den forms wird jeweils die TreeNodeCollection der anderen form mit übergeben...um dann halt die treeview des jeweiligen usercontrols zu füllen...

falls jemand ne bessere idee hat bitte bescheid sagen...
ANSONSTEN DANKE FÜR DEINE HILFE :)
 
Zurück