日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何使用事件

發(fā)布時(shí)間:2025/3/20 编程问答 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用事件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

事件有很多,比如說(shuō)鼠標(biāo)的事件:MouserMove,MouserDown等,鍵盤(pán)的事件:KeyUp,KeyDown,KeyPress。
有事件,就會(huì)有對(duì)事件進(jìn)行處理的方法,而事件和處理方法之間是怎么聯(lián)系起來(lái)的呢?委托就是他們中間的橋梁,事件發(fā)生時(shí),委托會(huì)知道,然后將事件傳遞給處理方法,處理方法進(jìn)行相應(yīng)處理。
比如在WinForm中最常見(jiàn)的是按鈕的Click事件,它是這樣委托的:this.button1.Click?+=?new?System.EventHandler(this.button1_Click);按按鈕后就會(huì)出發(fā)button1_Click方法進(jìn)行處理。EventHandler就是系統(tǒng)類(lèi)庫(kù)里已經(jīng)聲明的一個(gè)委托。

EventHandler以及其它自定義的事件委托都是一類(lèi)特殊的委托,他們有相同的形式:
delegate?void?事件委托名(object?sender,EventArgs?e);
object用來(lái)傳遞事件的發(fā)生者,比如二中的Button控件就是一個(gè)事件發(fā)生者;EventArgs用來(lái)傳遞事件的細(xì)節(jié)。

示例:

?

Code
using?System;

namespace?EventDemo
{
????
///?<summary>
????
///?Summary?description?for?Class1.
????
///?</summary>
????class?EventReceiver
????{
????????
///?<summary>
????????
///?The?main?entry?point?for?the?application.
????????
///?</summary>
????????[STAThread]
????????
static?void?Main(string[]?args)
????????{
????????????EventSender?c1?
=?new?EventSender();
????????????
//委托實(shí)例化后綁定到事件
????????????c1.OnUserRequest?+=?new?UserRequest(c1_OnUserRequest);
????????????c1.Run();
????????}
????????
private?static?void?c1_OnUserRequest(object?sender,?EventArgs?e)
????????{
//事件處理方法
????????????Console.WriteLine("\t你觸發(fā)了事件!");
????????}
????}
????
//定義委托
????public?delegate?void?UserRequest(object?sender,EventArgs?e);
????
///?<summary>
????
///?事件發(fā)送類(lèi)
????
///?</summary>
????public?class?EventSender
????{
????????
public?EventSender()
????????{
????????}
????????
//定義一個(gè)委托類(lèi)型的事件
????????public?event?UserRequest?OnUserRequest;
????????
public?void?Run()
????????{
????????????
while(true)
????????????{
????????????????
if(Console.ReadLine()?==?"a")
????????????????{
????????????????????
//事件監(jiān)聽(tīng),產(chǎn)生事件
????????????????????OnUserRequest(this,new?EventArgs());
????????????????}
????????????}
????????}

????}
}

?

帶事件數(shù)據(jù)的事件示例:


?

Code
using?System;

namespace?EventDemo
{
????
///?<summary>
????
///?Summary?description?for?Class1.
????
///?</summary>
????class?EventReceiver
????{
????????
///?<summary>
????????
///?The?main?entry?point?for?the?application.
????????
///?</summary>
????????[STAThread]
????????
static?void?Main(string[]?args)
????????{
????????????EventSender?c1?
=?new?EventSender();
????????????
//委托實(shí)例化后綁定到事件
????????????c1.OnUserRequest?+=?new?UserRequest(c1_OnUserRequest);
????????????c1.Run();
????????}
????????
private?static?void?c1_OnUserRequest(object?sender,?OnUserRequestEventArgs?e)
????????{
//事件處理方法
????????????Console.WriteLine("你觸發(fā)了事件"+e.InputText);
????????}
????}
????
//定義委托
????public?delegate?void?UserRequest(object?sender,OnUserRequestEventArgs?e);
????
///?<summary>
????
///?帶事件數(shù)據(jù)的事件類(lèi),從EventArgs繼承
????
///?</summary>
????public?class?OnUserRequestEventArgs?:?System.EventArgs
????{
????????
private?string?_InputText;
????????
public?string?InputText
????????{
????????????
get
????????????{
????????????????
return?_InputText;
????????????}
????????????
set
????????????{
????????????????_InputText?
=?value;
????????????}
????????}
????}
????
///?<summary>
????
///?事件發(fā)送類(lèi)
????
///?</summary>
????public?class?EventSender
????{
????????
public?EventSender()
????????{
????????}
????????
//定義一個(gè)委托類(lèi)型的事件
????????public?event?UserRequest?OnUserRequest;
????????
public?void?Run()
????????{
????????????
while(true)
????????????{
????????????????
if(Console.ReadLine()?==?"a")
????????????????{
????????????????????
//事件監(jiān)聽(tīng),產(chǎn)生事件
????????????????????OnUserRequestEventArgs?e?=?new?OnUserRequestEventArgs();
????????????????????e.InputText?
=?"a";
????????????????????OnUserRequest(
this,e);
????????????????}
????????????}
????????}

????}
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/qiantuwuliang/archive/2009/05/30/1492442.html

總結(jié)

以上是生活随笔為你收集整理的如何使用事件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。