EventHandler
EventHandler
EventHandler表示將處理不包含事件數據的事件的方法
表示將處理不包含事件數據的事件的方法。
命名空間:System
程序集:mscorlib(在 mscorlib.dll 中)
Visual Basic(聲明)
Public Delegate Sub EventHandler ( _
sender As Object, _
e As EventArgs _
)
Visual Basic(用法)
Dim instance As New EventHandler(AddressOf HandlerMethod)
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler (
Object sender,
EventArgs e
)
C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler (
Object^ sender,
EventArgs^ e
)
J#
public delegate void EventHandler (
Object sender,
)
JScript 支持使用委託,但不支持進行新的聲明。
sender
事件源。
e
不包含任何事件數據的 EventArgs。
備註
.NET Framework 中的事件模型基於具有事件委託,該委託將事件與事件處理程序連接。引發事件需要兩個元素:
標識對事件提供響應的方法的委託。
保存事件數據的類。
委託是一個定義簽名的類型,即方法的返回值類型和參數列表類型。可以使用委託類型來聲明一個變數,該變數可以引用與委託簽名相同的所有方法。
事件處理程序委託的標準簽名定義一個沒有返回值的方法,其第一個參數的類型為 Object,它引用引發事件的實例,第二個參數從 EventArgs 類型派生,它保存事件數據。如果事件不生成事件數據,則第二個參數只是 EventArgs 的一個實例。否則,第二個參數為從 EventArgs 派生的自定義類型,提供保存事件數據所需的全部欄位或屬性。
EventHandler 是一個預定義的委託,專用於表示不生成數據的事件的事件處理程序方法。如果事件生成數據,則必須提供自己的自定義事件數據類型,並且必須要麼創建一個委託,其中第二個參數的類型為自定義類型,要麼使用泛型 EventHandler 委託類並用自定義類型替代泛型類型參數。
若要將事件與處理事件的方法關聯,請向事件添加委託的實例。除非移除了該委託,否則每當發生該事件時就調用事件處理程序。
有關事件處理程序委託的更多信息,請參見 事件和委託。
主題 位置
示例
下面的代碼示例演示不使用事件數據的事件處理程序委託的聲明。EventHandler 類是事件委託的類型,sender 是引發事件的對象,而 e 則是不包含任何數據的事件數據對象。示例的第二行代碼為類中沒有數據的事件定義事件成員。
Visual Basic 複製代碼
Delegate Sub EventHandler(sender As Object, e As EventArgs)
Public Event NoDataEventHandler As EventHandler
C# 複製代碼
public delegate void EventHandler(Object sender, EventArgs e);
public event EventHandler NoDataEventHandler;
C++ 複製代碼
public:
delegate void EventHandler( Object^ sender, EventArgs^ e );
event EventHandler^ NoDataEventHandler;
J# 複製代碼
public delegate void EventHandler(Object sender, EventArgs e);
public EventHandler noDataEventHandler = null;
public void add_NoDataEventHandler(EventHandler p)
{
noDataEventHandler =(EventHandler)System.Delegate.
Combine(noDataEventHandler, p);
}//add_NoDataEventHandler
public void remove_NoDataEventHandler(EventHandler p)
{
noDataEventHandler =(EventHandler)System.Delegate.
Remove(noDataEventHandler, p);
}// remove_NoDataEventHandler。