C#事件-自定义事件
事件有很多,比如說
鼠標的事件: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 最簡單的自定義事件
{
???? /// <summary>
???? /// 事件發送類
???? /// </summary>
???? 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()); //產生事件
???????????????? }
???????????? }
???????? }
???? }
???? /// <summary>
???? /// 事件接收類
???? /// </summary>
???? 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你觸發了事件!");
???????? }
???? }
}
轉載于:https://www.cnblogs.com/tanding/archive/2012/06/28/2566654.html
總結
以上是生活随笔為你收集整理的C#事件-自定义事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Math.random做背景图像随机
- 下一篇: 什么是Intent? 转