C 事件的建立。

2021-07-11 00:28:04 字數 1827 閱讀 2239

delegate void handler();

class incrementer

}class dozens

public dozens(incrementer incrementer)

void incrementdozenscount()

}class program

",dozenscounter.dozenscount);

}輸出結果為:

number of dozens = 8

標準事件的用法:

關於標準事件的用法需要注意以下幾點:

□ 第乙個引數用來儲存觸發事件的物件的引用。由於object型別的,所以可以匹配任何型別的例項;

□ 第二個引數用來儲存狀態資訊,指明什麼型別適用於該應用程式;

□ 返回型別是void。

public delegate void eventhandler(object sender,eventargs e);

eventhandler委託型別的第二個引數是eventargs類的物件,它宣告在system命名空間中。你可能會想,既然第二個引數用於傳遞資料,eventargsl類的物件應該可以儲存些型別的資料。但是,很顯然,你可能錯了。

□ eventargs設計為不能傳遞任何資料。它用於不需要傳遞資料的事件處理程式——通常會被忽略。

□ 如果你希望傳遞資料,必須宣告乙個派生自eventargs的類,使用合適的字段來儲存需要傳遞的資料。

儘管eventargs類實際上並不傳遞資料,但它是使用eventhandler委託模式的重要部分。不管引數使用的實際型別是什麼,object類和eventargs總是基類。這樣eventargs就能提供乙個對所有事件和事件處理器通用的簽名,只允許兩個引數,而不是各自不同的簽名。

現在對上面的委託進行修改:

delegate void handler();

class incrementer

}class dozens

public dozens(incrementer incrementer)

void incrementdozenscount(object source, eventargs e)

}class program

",dozenscounter.dozenscount);}}

通過改變上述事件,變為標準事件。輸出結果與上述相同。

通過拓展eventargs來傳遞資料。

delegate void handler();

public class incrementereventargs : eventargs  //自定義派生子eventargs

}class incrementer}}

}class dozens

public dozens(incrementer incrementer)

void incrementdozenscount(object source, incrementereventargs e)

in ",

e.iterationcount, source.tostring());

dozenscount++;}}

class program

",dozenscounter.dozenscount);

console.read();}}

這段程式產生如下輸出,展示了被呼叫時的迭代和源物件的完全限定類名。

移除事件處理程式

class pulisher

}class subscriber

public void methodb(object o, eventargs e)

}class program

}輸出的結果為:

js 事件建立發布

建立事件.var event document.createevent event 初始化乙個點選事件,可以冒泡,無法被取消 event.initevent click true,false 設定事件監聽.elem.addeventlistener click function e false 觸發...

動態建立帶事件的控制項

類模組class1 option explicit private withevents mvarcmbtn as mandbutton public property set cmbtn byval vdata as mandbutton set mvarcmbtn vdata end prope...

C 中的事件和事件處理

c 中的事件,我覺得和mfc的訊息作用在某些方面是差不多的。這個專案中用到的需求是兩個類之間的資料互動,首先肯定是分為乙個觸發事件的類,乙個處理事件的類。1 首先需要在所有類的外部為事件定義乙個公共訪問型別的 該 為多重 所以 定義方法標識的返回為void型別。一般我們這麼定義 public voi...