Laden...

User Control: Eigenschaften aus Eigenschaftsfenster zuordnen

Erstellt von meldano vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.667 Views
M
meldano Themenstarter:in
30 Beiträge seit 2008
vor 11 Jahren
User Control: Eigenschaften aus Eigenschaftsfenster zuordnen

Hallo,

ich habe ein User Control u.a. mit folgender Eigenschaft

 [Browsable(true), Category("Spezial"), Description("Gibt das Formular an das im Containerpanel dargestellt wird")]
        public Form Formular
        {
            get { return formular; }
            set { formular = value; }
        }

erstellt.

Das Formular wird durch Button Click in einem Containerpanel dargestellt.

Das Formular und das Containerpanel übergebe ich der User Control Instanz.

Soweit so gut.

Jetzt würde ich die beiden Eigenschaften gerne im PropertyGrid / Eigenschaftsfenster angeben. Wie mache ich dem User Control bekannt, das es die Instanzen des Formulars gibt um sie dort auszuwählen ?

Von jedem Formular wird es hinterher nur eine Instanz geben.

Ich hoffe, ihr könnt mir da einen Lösungsansatz geben!

Gruß
Daniel

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo meldano,

nachdem jetzt eine Zeit lang keine Antwort kam, schreibe ich mal, obwohl ich nicht mehr als ein Vermutung habe, nämlich dass VS in dem Fall keine Instanzen erzeugen kann. Ich würde vermuten, dass das nur mit literalen Werten gehen würde, also z.B. mit einem Enum. Dem UserControl würde dann von VS der vom Entwickler ausgewählte Enum.Wert übergeben werden. Das hilft allerdings nicht viel, weil das UserControl dann die Instanzen selbst erzeugen müsste, wozu es die konkreten Klassen kennen müsste, was keine gute Idee ist. So gesehen denke ich, dass du nicht darum herum kommst, dass der das Usercontrols benutzende Code die Instanzen erzeugt und an das UserControl übergibt.

herbivore

4.221 Beiträge seit 2005
vor 11 Jahren

Der Designer kann nur Objekte auflisten welche sich im selben Kontext befinden (z.B: Wenn dein UserControl ein Property Button hat kannst Du aus den Buttons auswählen welche sich im selben Container befinden wie Dein UserControl).

Aber wenn ich schon nur lese, dass ein UserControl einen Verweis auf ein Form haben will.... das schreit sehr laut nach "falsches Design".

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo Programmierhans,

wenn das UserControl die konkrete Form-Klasse kennen würde/müsste, würde ich dir zustimmen, aber wenn das UserControl - wie es der Codeausschnitt zeigt - vollkommen beliebige Forms anzeigen kann, dann spricht da nicht unbedingt etwas gegen.

Außerdem geht es wohl auch nicht um das Form, in dem sich das UserControl befindet, sondern um das Form, das in dem UserControl angezeigt werden soll. Und natürlich darf ein Control seine untergeordneten Controls (hier: Form) kennen.

Insofern aus meiner Sicht alles im grünen Bereich.

herbivore

C
258 Beiträge seit 2011
vor 11 Jahren

Hallo meldano,

So etwas ähnliches gab es schon mal
UserControl mit Objekt als Property im Designer anpassen

M
meldano Themenstarter:in
30 Beiträge seit 2008
vor 11 Jahren

@Console32: Ich glaube du hast meine Frage nicht gelesen 😉oder

@herbivore: Danke für deine Hinweise!

Außerdem geht es wohl auch nicht um das Form, in dem sich das UserControl befindet, sondern um das Form, das in dem UserControl angezeigt werden soll. Und natürlich darf ein Control seine untergeordneten Controls (hier: Form) kennen.

Genau das meine ich.

Letztendlich geht es mir darum, dem UserControl die Eigenschaft "Form" aus dem Eigenschaftsfenster zuzurordnen. Klar kann man das zur Laufzeit machen, letztendlich geht es aber darum, möglichst wenig tippen zu müssen, da das UserControl eine immer wiederkehrende Aufgabe übernimmt.

Deswegen die Frage, wie man User Controls mitteilen kann, welche Instanzen vorhanden sind.

Da ich keine Lösung gefunden habe und alle Formulare von einem bestimmten Basisformular erben, fülle ich mit Reflection eine ArrayList. Dem User Control wird als Form ein String übergeben.