Forms & Events

dlooney

Mitglied
Hi all,

ich wuerd gern wissen ob es moeglich ist das ein Form in einem anderen Form ein event ausloesen kann.

Hier mal beispiel was ich damit meine:
Wir haben Form1 und Form2. So Form1 erstellt Form2, jetzt soll Form2 durch klicken von "OK" oder einem anderen button was in Form1 ausloesen. Form1 soll dann z.b. ein drittes Form dann oeffnen und Form2 disposen.

Ich hoffe ihr habt verstanden was ich machen will ^^. Meine loesung momentan ist halt das ich Form2 in Form1 erzeuge, wenn dann der "OK" button gedrueckt wird in Form1. Setze ich dann Form2 auf hide und erzeuge Form3 in Form2. Ich denke mal da gibt es bessere loesungen. Wuerde mich freuen wenn mir wer helfen koennt.
 
Definiere einfach ein eigenes Event

Code:
Public Event OpenForm

Und abboniere es in Form1. Dann rufst du dein Event in der Sub des Buttons durch RaiseEvent auf.

Das ist jetzt die Lösung für Vb.Net, da du nicht dazugeschrieben hast, ob du C# oder Vb.net verwendest, habe ich dir die Lösung in Vb.Net geliefert. Du müsstest sie dann ggf. in C# umwandeln. :)
 
Hi,

danke fuer die antwort, ich moechte es in C# loesen. Zu deiner loesung eigenes Event schreiben meinst das mit Delegate oder wie ich hab das nicht ganz verstanden wie du meinst.
 
Hallo dlooney

Genau, mit einem Delegate.

Du hast ein SenderForm und ein EmpfaengerForm.

Im SenderForm deklarierst du Delegate und Event:

Code:
public delegate void NameDelegate (Parameter parameter);
public event NameDelegate eventName;

In der auslösenden Methode des SenderForms rufst du den Event auf:
Code:
eventName(parameter);

Im EmpfaengerForm rufst du jetzt das SenderForm auf und abonnierst den Delegate, der die Methode "Methode" auslöst:

Code:
SenderForm sender = new SenderForm();
SenderForm.NameDelegate aDelegate = new SenderForm.NameDelegate(Methode);
sender.eventName += aDelegate;

Jetzt fehlt nur noch die Methode im EmpfaengerForm (mit den selben Parameter wie der Delegate im SenderForm):

Code:
Methode(Parameter parameter)
{
//TODO
}


Grüsse, Tecla
 
Zurück