Hallo,
ich habe ein UserControl, das ist vollgepackt mit den unterschiedlichsten SubControls. Dabei handelt es sich auch um selbst gebastelte Controls, die sowohl Windows Controls als auch eigene Funktionen enthalten. Allen SubControls ist gemeinsam, dass sie ein Event 'UserChangedControlSettings' besitzen. Dieses Event wird vom SubControl immer dann gefeuert, wenn (wie der Name schon sagt) der Anwender eine Änderung an den SubControl Settings vornimmt. Alle Controls (das beherbergende UserControl und auch die darin befindlichen SubControls) werden zur Laufzeit in ParanetForm, sind als beim Programmstart nicht bekannt.
Geladen werden sämtliche Controls mittels einer Konfigurationsdatei über das MainForm, also nicht vom ParentForm der Controls selbst. Das MainForm lädt das ParentForm und das UserControl und die darauf befindlichen SubControls in das ParentForm. Ist dies geschehen ist das MainForm raus und es wird Form.Load des ParentForm ausgeführt. In .Load möchte ich dafür sorgen, dass das ParentForm, welches das UserControl mit seinen SubControls enthält auf das Event 'UserChangedControlSettings' reagiert.
Im Moment mache ich das so, dass ich mit For Each..TypeOf das UserControl durchsuche. Sofern der Typ passend ist, weiße ich mittels AddHandler das 'UserChangedControlSettings' Event des jeweiligen Controls einer Funktion im ParentForm zu.
Meine Frage:
geht das nicht simpler?
Im Grund sind alle meine SubControls ja auch UserControls. Gibt es eine Möglichkeit nicht einfach alle Controls der ParentForms zu durchsuchen.
Das funktioniert nicht, da 'UserChangedControlSettings' kein Ergeignis von System.Windows.Forms.Control ist.
Ist es irgendwie möglich herauszufinden, ob ein Control das Event 'UserChangedControlSettings' besitzt und das dann evtl. zu casten?
Ich hatte auch an Interfaces gedacht. Aber keine Ahnung ob mir das weiter hilft.
*Topic verschoben*
ich habe ein UserControl, das ist vollgepackt mit den unterschiedlichsten SubControls. Dabei handelt es sich auch um selbst gebastelte Controls, die sowohl Windows Controls als auch eigene Funktionen enthalten. Allen SubControls ist gemeinsam, dass sie ein Event 'UserChangedControlSettings' besitzen. Dieses Event wird vom SubControl immer dann gefeuert, wenn (wie der Name schon sagt) der Anwender eine Änderung an den SubControl Settings vornimmt. Alle Controls (das beherbergende UserControl und auch die darin befindlichen SubControls) werden zur Laufzeit in ParanetForm, sind als beim Programmstart nicht bekannt.
Geladen werden sämtliche Controls mittels einer Konfigurationsdatei über das MainForm, also nicht vom ParentForm der Controls selbst. Das MainForm lädt das ParentForm und das UserControl und die darauf befindlichen SubControls in das ParentForm. Ist dies geschehen ist das MainForm raus und es wird Form.Load des ParentForm ausgeführt. In .Load möchte ich dafür sorgen, dass das ParentForm, welches das UserControl mit seinen SubControls enthält auf das Event 'UserChangedControlSettings' reagiert.
Im Moment mache ich das so, dass ich mit For Each..TypeOf das UserControl durchsuche. Sofern der Typ passend ist, weiße ich mittels AddHandler das 'UserChangedControlSettings' Event des jeweiligen Controls einer Funktion im ParentForm zu.
VB.NET-Quellcode
- 'SubControl_1
- For Each ctrl As SubControl_1 In UserControl.Controls.OfType(Of SubControl_1)()
- AddHandler ParentForm.UserChangedControlSettings, AddressOf DoSomething
- Next
- 'SubControl_2
- For Each ctrl As SubControl_2 In _SubSubCtrl.Controls.OfType(Of SubControl_2)()
- AddHandler ParentForm.UserChangedControlSettings, AddressOf DoSomething
- Next
- 'SubControl_3
- For Each ctrl As SubControl_3 In _SubSubCtrl.Controls.OfType(Of SubControl_3)()
- AddHandler ParentForm.UserChangedControlSettings, AddressOf DoSomething
- Next
Meine Frage:
geht das nicht simpler?
Im Grund sind alle meine SubControls ja auch UserControls. Gibt es eine Möglichkeit nicht einfach alle Controls der ParentForms zu durchsuchen.
Das funktioniert nicht, da 'UserChangedControlSettings' kein Ergeignis von System.Windows.Forms.Control ist.
Ist es irgendwie möglich herauszufinden, ob ein Control das Event 'UserChangedControlSettings' besitzt und das dann evtl. zu casten?
Ich hatte auch an Interfaces gedacht. Aber keine Ahnung ob mir das weiter hilft.
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()