Christian Kusmanow
Erfahrenes Mitglied
Nein. Du hast versucht das Form.Load Ereigniss mit einer Methode zu verknüpfen, welche nicht der dafür benötigten Methodensignatur entspricht (Parameter).
Dann versuchst Du schonwieder ein statisches Objekt aufzurufen, was nicht vorhanden ist (idea.Pinger.PingFinishedEventHandler). Dir fehlen die Grundlagen zur OOP. Kauf Dir bitte unbedingt ein Buch darüber und schau in den Stickie den ich eben gepostet habe.
Beleibt jetzt nur noch die Frage ob Du das Ereigniss von deinem Pinger oder von dem Form erledigen lassen willst. Wenn in deinem Form, dann machst es so:
Im Form:
Im Pinger:
Btw. Namespaces schreibt man aber auch groß. Schau Dir am besten deine Programme immer mit FXCop an.
//Edit: Dem Property musst aber noch das Form zuweisen:
Dann versuchst Du schonwieder ein statisches Objekt aufzurufen, was nicht vorhanden ist (idea.Pinger.PingFinishedEventHandler). Dir fehlen die Grundlagen zur OOP. Kauf Dir bitte unbedingt ein Buch darüber und schau in den Stickie den ich eben gepostet habe.
Beleibt jetzt nur noch die Frage ob Du das Ereigniss von deinem Pinger oder von dem Form erledigen lassen willst. Wenn in deinem Form, dann machst es so:
Im Form:
C#:
class MyForm : Form
{
Pinger m_pinger;
MyForm ()
{
m_pinger = new Pinger();
m_pinger.PingFinished += new idea.Pinger.PingFinishedEventHandler( this.m_pinger_PingFinished );
}
void m_pinger_PingFinished( object sender, string pinged_host )
{
this.Invoke( PingFinished( pinged_host ) );
}
void PingFinished( string pinged_host )
{
// event handling goes here
}
}
Im Pinger:
C#:
class Pinger
{
public delegate void PingFinishedEventHandler(object sender, string pinged_host);
public event PingFinishedEventHandler PingFinished;
Control eventSubscriberControl;
public Control EventSubscriberControl {
get { return eventSubscriberControl; }
set { eventSubscriberControl= value; }
}
public void do_ping()
{
[...]
if ( eventSubscriberControl == null )
PingFinished( this, host );
else( eventSubscriberControl != null && eventSubscriberControl .InvokeRequired )
eventSubscriberControl.Invoke( PingFinished, new object[] { this, host } );
}
}
Btw. Namespaces schreibt man aber auch groß. Schau Dir am besten deine Programme immer mit FXCop an.
//Edit: Dem Property musst aber noch das Form zuweisen:
C#:
MyForm : Form
{
MyForm ()
{
m_pinger = new Pinger();
m_pinger.EventSubscriberControl = this;
m_pinger.PingFinished += new idea.Pinger.PingFinishedEventHandler( this.m_pinger_PingFinished );
}
}
Zuletzt bearbeitet: