C#自定义事件

简单的自定义事件

首先定义一个类来监听客户端事件,这里我们监听键盘的输入。

定义一个委托。

public delegate void UserRequest(object sender,EventArgs e);

前面的object用来传递事件的发生者,后面的EventArgs用来传递事件的细节,现在暂时没什么用处,一会后面的例子中将使用。

下面定义一个此委托类型类型的事件

public event UserRequest OnUserRequest;

下面我们来做一个死循环

public void Run() 

    bool finished=false; 
    do 
       { 
          if (Console.ReadLine()=="h") 
            { 
               OnUserRequest(this,new EventArgs()); 
            }
       }while(!finished); 
}

此代码不断的要求用户输入字符,如果输入的结果是h,则触发OnUserRequest事件,事件的触发者是本身(this),事件细节无(没有传递任何参数的EventArgs实例)。我们给这个类取名为UserInputMonitor。

下面我们要做的是定义客户端的类 
首先得实例化UserInputMonitor类 
UserInputMonitor monitor=new UserInputMonitor();

然后我们定义一个方法。

private void ShowMessage(object sender,EventArgs e) 

Console.WriteLine("HaHa!!"); 
}

最后要做的是把这个方法和事件联系起来(订阅事件),我们把它写到库户端类的构造函数里。

Client(UserInputMonitor m) 

m.OnUserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage); 
//m.OnUserRequest+=new m.UserRequest(this.ShowMessage);

//注意这种写法是错误的,因为委托是静态的

}

 

posted @ 2011-01-28 13:57  hanmos  阅读(390)  评论(0编辑  收藏  举报