Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“怎么做?”;定制活动“;在VB.Net中工作?_.net_Vb.net_Events - Fatal编程技术网

“怎么做?”;定制活动“;在VB.Net中工作?

“怎么做?”;定制活动“;在VB.Net中工作?,.net,vb.net,events,.net,Vb.net,Events,在C#中,如果我想创建一个“自定义事件”,可以执行以下操作: private EventHandler _MyEvent; Public Event EventHandler MyEvent { add{ _MyEvent += value; } remove{ _MyEvent -= Value; } } protected void RaiseMyEvent() { if(_MyEvent != nul) _MyEvent(this, EventArgs.Em

在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)
然后在代码中的任意位置调用下降上升事件

RaiseEvent DidSomething(me, EventArgs.Empty)
…现在,如果您(或任何其他人询问)如何创建处理引发事件的方法,请根据“DidSomething”示例执行以下操作:

Private Sub NowDoSomething(sender As Object, e As EventArgs) Handles Me.DidSomething
   'Code for Event here
End Sub