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!
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
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!
Hallo budili,
bitte, bitte, bitter, nicht versuchen EventHandler selbst aufzurufen. Nur gefeuerte Events sollen die EventHandler aufrufen. Wie es besser geht, steht oben.
herbivore
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!
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
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!
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
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!
Hallo budili,
ich meinte Methode.
herbivore
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!
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
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!
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
Okay, jetzt habe ichs kapiert 😁
Nimm das Leben nicht zu ernst - denn du kommst nicht lebend raus!