Hallo,
ich habe mir zum besseren Verständnis mal eine kleine Anwendung mit 3 Forms und etwas Eventhandling untereinander erstellt.
Die will ich hier mal vorstellen und würde mich über (konstruktive) Kritik darüber freuen, ob ich auf dem Holzweg bin oder durchaus auf dem richtigen Weg.
Ungeachtet der Sinnhaftigkeit des Projekts verdeutliche ich mir daran die Mechanismen zur formübergreifenden Eventkommunikation.
Form1 öffnet in seiner "MyBase.Load" das Form2, hat also unmittelbar Kenntnis von Form2 und kann dadurch Events von Form2 einfach mit "WithEvents" abonnieren.
Klicke ich in Form2 auf den "btnForm2Event" wird dadurch ein Event ausgelöst, welches Form1 veranlasst den Zustand von "chkForm2" auf "chkForm1" zu übertragen.
Form2 öffnet durch klicken auf "btnForm2OpenForm3" das Form3.
Klicke ich "btnForm3ReadChkBoxForm1" holt sich Form3 den Zustand der "chkForm1" und setzt damit seine eigene "chkForm3".
Da Form3 zunächst erst mal keine Kenntnis darüber hat, ob Form1 überhaupt existiert wird erst mal mittels "My.Application.OpenForms" danach gesucht und dann darauf verwiesen.
Umgekehrt soll auch Form3 etwas an Form1 senden und zwar den Zustand der Variablen "bStatusCheckBox" sobald "btnForm3EvtSendbStatusCheckBoxVariableToForm1" gedrückt wird.
"bStatusCheckBox" setzt dabei entsprechend den RadioButton auf Form1.
Per Event, das von Form1 direkt von Form3 abonniert wird, geht das ja nicht, da beim Erstellen von Form1 das Form3 ja noch nicht existiert und auch nicht von Form 1 erstellt wird.
Form1 weiß also gar nichts von Form3. Daher abonniert Form1 per AddHandler das Event "evtForm3" welches sich im Modul1 befindet. Form3 ruft also "evtForm3Mod" auf, übergibt die notwendigen Parameter und erst dort wird dann das Event ausgelöst, welches den Variablenwert als EventArgs an Form1 übergibt.
Projekt kann hier runter geladen werden: WindowsApplication2.rar
ich habe mir zum besseren Verständnis mal eine kleine Anwendung mit 3 Forms und etwas Eventhandling untereinander erstellt.
Die will ich hier mal vorstellen und würde mich über (konstruktive) Kritik darüber freuen, ob ich auf dem Holzweg bin oder durchaus auf dem richtigen Weg.
Ungeachtet der Sinnhaftigkeit des Projekts verdeutliche ich mir daran die Mechanismen zur formübergreifenden Eventkommunikation.
Form1 öffnet in seiner "MyBase.Load" das Form2, hat also unmittelbar Kenntnis von Form2 und kann dadurch Events von Form2 einfach mit "WithEvents" abonnieren.
Klicke ich in Form2 auf den "btnForm2Event" wird dadurch ein Event ausgelöst, welches Form1 veranlasst den Zustand von "chkForm2" auf "chkForm1" zu übertragen.
Form2 öffnet durch klicken auf "btnForm2OpenForm3" das Form3.
Klicke ich "btnForm3ReadChkBoxForm1" holt sich Form3 den Zustand der "chkForm1" und setzt damit seine eigene "chkForm3".
Da Form3 zunächst erst mal keine Kenntnis darüber hat, ob Form1 überhaupt existiert wird erst mal mittels "My.Application.OpenForms" danach gesucht und dann darauf verwiesen.
Umgekehrt soll auch Form3 etwas an Form1 senden und zwar den Zustand der Variablen "bStatusCheckBox" sobald "btnForm3EvtSendbStatusCheckBoxVariableToForm1" gedrückt wird.
"bStatusCheckBox" setzt dabei entsprechend den RadioButton auf Form1.
Per Event, das von Form1 direkt von Form3 abonniert wird, geht das ja nicht, da beim Erstellen von Form1 das Form3 ja noch nicht existiert und auch nicht von Form 1 erstellt wird.
Form1 weiß also gar nichts von Form3. Daher abonniert Form1 per AddHandler das Event "evtForm3" welches sich im Modul1 befindet. Form3 ruft also "evtForm3Mod" auf, übergibt die notwendigen Parameter und erst dort wird dann das Event ausgelöst, welches den Variablenwert als EventArgs an Form1 übergibt.
Projekt kann hier runter geladen werden: WindowsApplication2.rar
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „roepke“ ()