您当前的位置: 首页 >  c#

暂无认证

  • 0浏览

    0关注

    101061博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C#事件-自定义事件

发布时间:2010-11-22 00:10:00 ,浏览量:0

事件有很多,比如说 鼠标的事件:MouserMove,MouserDown等。 键盘的事件:KeyUp,KeyDown,KeyPress。 有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。 比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click += new System.EventHandler(this.button1_Click);按按钮后就会出发button1_Click方法进行处理。EventHandler就是系统类库里已经声明的一个委托。-------委托实例化,this.buttion1_click为方法名

EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式: delegate void 事件委托名(object sender,EventArgs e); object用来传递事件的发生者,比如Button控件就是一个事件发生者;EventArgs用来传递事件的细节。 我们看下面的例子: using System; namespace 最简单的自定义事件 {      ///      /// 事件发送类      ///      class Class1      {          public delegate void UserRequest(object sender,EventArgs e); //定义委托          public event UserRequest OnUserRequest; //定义一个委托类型的事件          public void run()          {              while(true)              {                  if(Console.ReadLine()=="a")                  {//事件监听                      OnUserRequest(this,new EventArgs()); //产生事件                  }              }          }      }      ///      /// 事件接收类      ///      class Class2      {          static void Main(string[] args)          {              Class1 c1 = new Class1();              c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); //委托实例化后绑定到事件              c1.run();          }          private static void c1_OnUserRequest(object sender, EventArgs e)          {//事件处理方法              Console.WriteLine("/t你触发了事件!");          }      } }

关注
打赏
1655516835
查看更多评论
立即登录/注册

微信扫码登录

0.0641s