Dot-Net
“自定義事件”如何在 VB.Net 中工作?
在 C# 中,如果我想創建一個“自定義事件”,你可以這樣做:
private EventHandler _MyEvent; Public Event EventHandler MyEvent { add{ _MyEvent += value; } remove{ _MyEvent -= Value; } } protected void RaiseMyEvent() { if(_MyEvent != nul) _MyEvent(this, EventArgs.Empty); }在 VB 中,這不是那麼簡單,我也無法在網上找到任何幫助。這不起作用:
private _MyEvent as EventHandler Public Custom Event MyEvent as EventHandler AddHandler(ByVal value as EventHandler) _MyEvent += value 'does not work addhandler _MyEvent, value 'does not work [Delegate].Combine(_MyEvent, value) '_MyEvent still nothing End AddHandler RemoveHandler(ByVal value as EventHandler) 'Same kind of stuff here End RemoveHandler RaiseEvent(sender as Object, e as EventArgs) if(_MyEvent IsNot Nothing) Then '_MyEvent is always nothing _MyEvent.Invoke(sender, e) End If End RaiseEvent End Event請幫忙。
代表是不可變的,所以方法“
$$ Delegate $$.Combine" 返回新的委託,但不修改參數。所以你需要:
_MyEvent = [Delegate].Combine(_MyEvent, value)
VB 為您完成了很多工作。
只需聲明一個事件:
Public Event DidSomething(sender as object, e as EventArgs)然後在程式碼中的任何地方,呼叫下降的 Raise 事件
RaiseEvent DidSomething(me, EventArgs.Empty)