Laden...

Custom Windows.Forms.Panel mit eigenem Designer akezeptiert keine Child Controls

Erstellt von gelöschtem Konto vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.273 Views
Gelöschter Account
vor 9 Jahren
Custom Windows.Forms.Panel mit eigenem Designer akezeptiert keine Child Controls

Ich bin gerade dabei ein System.Windows.Forms.Panel zu überschreiben.
Hintergrund ist das an den 4 Ecken des Panels Objekte/Items angeboten werden sollen die selbst mittels Überschreibung von OnPaint gezeichnet/angeboten werden(also nicht von Control oder Component erben quasi weitestgehend unsichtbar sind).

Diese 4 Objekte sind zwar in den Eigenschaften des Custom Panels verfügbar aber ich möchte natürlich das diese Objekte auch im visuellen Designer leicht ansprechbar sind. Also einfach drauf klicken und im PropertyGrid der IDE ist das Objekt parametrisierbar/konfigurierbar. Soweit so leicht, habe ich dafür einen einen eigenen Control Designer erstellt und meinem CustomPanel via Attribute zugewiesen.

Dieser Designer derzeit nichts weiter tut ausser die GetHitTest Methode zu überschreiben und dem Selection Service der IDE bei positiver Auswahl das momentan ausgewählte Objekt zu übergeben. Klappt alles super!

Leider hat mein Custom Panel jetzt die Fähigkeit verlernt als ControlContainer für andere Controls zu agieren. Ich kann Controls in das Panel ziehen aber sie werden dadurch kein Child Control von Panel, wie sonst üblich. Sobald ich meinen Designer entferne, gehts aber sofort wieder. Ich hab inzwischen diverses ausprobiert, die AssociatedControl Eigenschaft meines Control Designers, das ComponentAdded/Remove Event von IComponentService, aber irgendwie stochere ich gerade in trüben Gewässern.

Habe ich vom falschem Designer geerbt oder wo ist das Problem?
(Ich habe wirklich intensiv die Suchmaschine meiner Wahl bemüht aber ausser Schönwetter Beispielen nichts hilfreiches gefunden)

C
2.122 Beiträge seit 2010
vor 9 Jahren

Habe ich vom falschem Designer geerbt

Wahrscheinlich, denn du sagst: "...derzeit nichts weiter tut ausser die GetHitTest Methode zu überschreiben".
Die Aufnahme von Child Controls ist ebenfalls Sache des Designers. Wenn du da einen rein gibst der das nicht kann, gehts nicht. Mir ist der ParentControlDesigner bekannt, damit hab ich auch schon mal was gemacht.
Am besten siehst du die an welchen Designer das Panel normalerweise nutzt und erweiterst den um deine Zusätze.

Gelöschter Account
vor 9 Jahren

Hmm ja natürlich hab ich mir das Panel in den Meta Daten angeschaut.
Vielleicht war das nicht genau genug weil die Meta Daten in VS einen manchmal anlügen bzw. verschweigen. (Als Kind habe ich gerlent das verschweigen auch eine Form von Lügen ist aber das nur am Rande) Laut Meta in VS greift der erste Designer erst bei Control, aber dank deinem Hinweis traue ich dem Braten nicht mehr so recht, vor allem weil mir der ParentControlDesigner auch irgendwie bekannt vorkommt.
Ich schau mir das ganze nochmal in ILSpy an teste den ParentControl Designer. Da war ich wohl zu naiv 😦 Mea culpa .... 😦