国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C#的事件處理機制應用

2024-07-21 02:26:45
字體:
來源:轉載
供稿:網友

如果要在c#中定義一個事件,首先你要創造一個delegate(委派),用他來定義一個你所想使用事件的標簽,然后你才能使用event關鍵字,在這個委派的基礎上定義一個事件.

兩點需要注意的是:第一,首先你要創造一個委派,第二,根據你所創造的委派來定義一個事件,這才是一個完整的事件定義.

假設我們把書中的product類進行增強.加入了一個namechanged事件,此事件只有當name通過屬性渠道被更改時就會發生.而如果私有變量name是通過類的內部代碼被修改時,此事件不會發生.代碼如下:

public class product
{
    public delegate void namechangedeventhandler();//定義了事件
    public event namechangedeventhandler namechanged;//事件的調用namechanged
    public string name
    {
        get{return name;}
        set{name = value;
            if(namechanged != null)
            {
                 namechanged();
            }
           }
    }
}

上一課中的初始化函數product(參數1,參數2)就無法引發事件,因為此時的name是通過內部被修改的,所以這樣定義的時候,當對象被實例話的時候事件不會發生,但當對象的name屬性通過saleproduct.name = "abcdefg"被更改時,就會引發事件.

在此處我們可以看到,當事件發生時,還沒有執行任何實際的代碼,要處理事件,你必須要建立一個對應此事件的子程序,此子程序所包含的內容就是當一個事件發生時,所要處理的一系列的操作,然后連接子程序到事件.要控制product類,你需要在另外一個類中定義一個事件鉤子(event handler).此事件鉤子要與事件(event)有著相同的語法,例如,在product類中事件是沒有返回參數也沒有參數的,所以事件鉤子要與之一致,形式如下:

public void changedetected()

{//此處的代碼就是事件發生時要處理的代碼}

下一步就是將事件鉤子與事件進行掛鉤,首先做一個delegate指向事件鉤子,然后使用+=符號,把delegate附加到事件上面去: 代碼如下:

product saleproduct = new product();

saleproduct.namechanged += new namechangedeventhandler(changedetected);

現在,當saleproduct.name = "kitchen garbage"執行時,事件就會發生,而發生所要處理的具體操作則寫在changedetected()里面.

希望我把事件處理機制講清楚了,這里可真難懂,哎,我算是搞明白是怎么一會事情了,下一文章準備找一篇網上的關于事件處理文章進行理解,如果理解得沒問題,那么說明我是真懂了,大家如果有什么不明白的地方可以給我留言,留言必復

 

,歡迎訪問網頁設計愛好者web開發。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 横山县| 北海市| 扶风县| 和政县| 句容市| 伊通| 濮阳市| 万荣县| 丹寨县| 昌图县| 通海县| 阿克陶县| 乌拉特后旗| 崇礼县| 新竹市| 贞丰县| 通城县| 阜南县| 南和县| 佛教| 锡林浩特市| 健康| 长葛市| 三亚市| 惠安县| 牡丹江市| 咸阳市| 汉中市| 云林县| 澎湖县| 景德镇市| 江津市| 民权县| 会昌县| 济阳县| 深圳市| 托里县| 张家川| 白朗县| 洛川县| 海晏县|