Dot-Net

“自定義事件”如何在 VB.Net 中工作?

  • February 6, 2012

在 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)

引用自:https://stackoverflow.com/questions/389124