Laden...

Events casten

Erstellt von budili vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.841 Views
B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren
Events casten

Moin,

über ein Button_Click(object sender, EventArgs e) Ereignis führe ich
ein paar Funktionen aus.

Nun möchte ich noch das Ereignis der der "SerialPort" Klasse,
DataReceived einmal ausführen.

Habe das mal so versucht:


Port_DataReceived(this, (SerialDataReceivedEventArgs)e);

Kompilieren klappt auch soweit, nur wenn ich hinterher debugge,
bekomme ich an der Stelle eine Ausnahme:

"InvalidCastException"
Das Objekt des Types System.EventArgs kann nicht in Typ
System.IO.SerialDataReceivedEventArgs umgewandelt werden.

Mache ich da was falsch ??

Gruß
Budi

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

Events und EventHandler sollten sich nie direkt und nie gegenseitig aufrufen. Mache eine neue Methode mit den Parametern, die du brauchst (also nicht vom Typ EventArgs), rufe diese aus beiden EventHandlern auf.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

irgendwie klappt das nicht ...
ich mache was falsch ...


private void Restart_DataReceived()
{
            SerialDataReceivedEventArgs ex = System.IO.Ports.SerialDataReceivedEventArgs.Empty;
            port_DataReceived(this, ex);
}

Compiler sagt:
"Fehler 1 Der Typ "System.EventArgs" kann nicht implizit in "System.IO.Ports.SerialDataReceivedEventArgs" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)"

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

bitte, bitte, bitter, nicht versuchen EventHandler selbst aufzurufen. Nur gefeuerte Events sollen die EventHandler aufrufen. Wie es besser geht, steht oben.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

Hm ... aber was ist so schlimm daran (falls die Events übereinstimmen) ??

In dem Fall habe ich ja das Problem, das kein Event mehr gefeuert wird ...

Budi

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

was heißt schon schlimm? Sowas macht man einfach nicht. 🙂 Was ist so schlimm daran, es so zu machen, wie ich sage? Zumal dein Problem dann gelöst ist und du nicht nicht mit unterschiedlichen EventArgs-Typen rumschlagen musst.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

Naja, der Mensch ist von Natur aus faul und versucht sich das Leben
so einfach wie nur möglich zu gestalten 8)

Gruß
Budi

P.S. Soll ich dann an der Stelle selber ein Event feuern ?
Oder haste vllt ein kleines Beispiel für mich ? ;D

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

Soll ich dann an der Stelle selber ein Event feuern ?

nein, wenn du faul bist 🙂 solltest du es so machen, wie ich gesagt habe, das ist die einfachste Lösung.

Oder haste vllt ein kleines Beispiel für mich ? ;D

wie man eine eigene Methode definiert und aufruft, solltest du wissen, oder?

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

wie man eine eigene Methode definiert und aufruft, solltest du wissen, oder?

Hoffe ich mal ... aber um es nicht falsch zu machen, habe ich vorsichtshalber
dich gefragt... meinst du jetzt Methode oder Event?

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

ich meinte Methode.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

achso ...

Und in dieser Methode soll ich dann das Event für
den Eventhandler DataReceived feuern ??

Habe ich das richtig verstanden?

Gruß
Budi

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

nein, ist es denn so schwer? Oder habe ich dich die ganze Zeit falsch verstanden?

Du sollst deinen Event-Behandlungscode in eine eigene neue Methode packen. Diese Methode rufst du aus dem oder den EventHandlern und wo immer du sonst noch willst auf.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

achso meinst du das:

Ich soll einfach den Code aus dem Eventhandler in
diese neue Methode kopieren oder wie jetzt ?

Oder steh ich jetzt total aufm Schlauch...

Gruß
Budi

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo budili,

ja, im Prinzip kopieren und dann die Stellen anpassen, wo du auf EventArgs zugreifst, weil deine neue Methode ja keine EventArgs mehr als Parameter bekommt, sondern eben direkt die Parameter, die sie braucht.

herbivore

B
budili Themenstarter:in
171 Beiträge seit 2007
vor 16 Jahren

Okay, jetzt habe ichs kapiert 😁

Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!