关闭

自定义事件

166人阅读 评论(0) 收藏 举报

自定义事件

简单的自定义事件

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

定义一个委托。

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);

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

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5133次
    • 积分:113
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章存档