Laden...

Event in MainForm bei Klick im UserControl

Erstellt von deAndro vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.556 Views
D
deAndro Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren
Event in MainForm bei Klick im UserControl

Hi Leute,

nun hab ich vieles wieder aufgeholt und kann mich entspannt zurücklehnen für die kommende 1. Arbeitswoche.

Eins fehlt mir noch:

Beispiel: Ein Panel hat ein UserControl, welches mit einem Button bestückt ist. Dieser Button soll das Panel im MainForm verkleinern oder vergrößern wenn man drauf klickt.

Aktuell denke ich das ich mit dem Button im UserControl ein Event im MainForm anstoßen muss, oder?

Weis aber überhaupt nicht mehr wie. Finde leider auch bei Google nix. Vielleicht such ich auch falsch.

Hilfestellung wäre nett..
a) gibt es noch einen besseren Weg als vom UserControl ein Event im Parent aus zu lösen? Immerhin kann ich jetzt nicht wissen ob das UserControl nicht irgendwann in einem anderen Parent eingebunden wird ....
b) wenn nicht wie mache ich das am Besten?

cu s00n und schönen Sonntag
deAndro

D
deAndro Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren

hmm... eventuell hab ich sogar schon meine eigene Lösung... bin aber nicht sicher...

im Main Form
UsrCtrlPanelButton.Click += onMinimizePanelClick;

und dann die Methode einbinden als sei es ein Button der Main-Form...
Aber würde mich freuen ein paar Meinungen zu hören.

Mir scheint das noch zu einfach.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo deAndro,

nein, greife nie aus dem MainForm auf die Internas eines UserControls zu. Definiere ein eigenes Event im UserControl und abonniere das im MainForm. Siehe [FAQ] Eigenen Event definieren.

herbivore

D
deAndro Themenstarter:in
16 Beiträge seit 2011
vor 12 Jahren

Hi Herbivore,

hatte schon so den Verdacht das Du mir so was schreiben würdest...
Was ist daran zu verachten wenn man das tut? Im aktuellen Beispiel funktioniert das einwandfrei.

LG deAndro

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo deAndro,

ein UserControl soll üblicherweise bestimmten Teil des GUIs wiederverwendbar kapseln. Wenn du auf Interna zugreifst, erschwerst du die Weiterentwicklung des bzw. Änderungen am UserControl. Momentan ist es vielleicht ein Button, der die Aktion auslösen soll. Später soll das Auslösen vielleicht über ein anderes Control oder über einen ganz anderen Weg erfolgen. Deshalb solltest du dein MainForm nicht davon abhängig machen.

herbivore

T
381 Beiträge seit 2009
vor 12 Jahren

greife nie aus dem MainForm auf die Internas eines UserControls zu. Definiere ein eigenes Event im UserControl und abonniere das im MainForm.

Ein anderer Ansatz wäre, das Usercontrol Werte in einer anderen Klasse verändern zu lassen die INotifyPropertyChanged implementiert. Dann kann sich die MainForm direkt als Databinding an diese Klasse hängen.