将事件从C#转换为VB.Net…如何?

将事件从C#转换为VB.Net…如何?,c#,.net,vb.net,events,C#,.net,Vb.net,Events,我必须将C代码转换为VB.NET,但我有一些问题……你能帮我吗 这是C#来源: 我试过: Public Shared Event CallEvent As ValueEnterEventHandler Public Shared Sub DispatchCompanyCall(moduleName As String) If IsReady AndAlso CallEvent IsNot Nothing Then CallEvent(Nothing, New Value

我必须将C代码转换为VB.NET,但我有一些问题……你能帮我吗

这是C#来源:

我试过:

Public Shared Event CallEvent As ValueEnterEventHandler

Public Shared Sub DispatchCompanyCall(moduleName As String)
    If IsReady AndAlso CallEvent IsNot Nothing Then
        CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub
但我收到了以下错误消息:CallEvent是一个事件,无法直接调用,请使用RaiseEvent语句来引发事件


我应该写什么?你能帮助我吗?谢谢。

使用VB.Net,无需检查事件的
null
/
Nothing
,您只需通过
RaiseEvent
关键字直接引发事件即可

Public Shared Sub DispatchCompanyCall(moduleName As String)
    If IsReady Then
        RaiseEvent CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub

嗯。。。按照错误消息所说的去做,并使用
RaiseEvent

Public Shared Event CallEvent As ValueEnterEventHandler

Public Shared Sub DispatchCompanyCall(moduleName As String)
    If IsReady AndAlso CallEvent IsNot Nothing Then
        RaiseEvent CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub

嗯,按照错误信息所说的去做。请参阅RaiseEvent文档以获取示例。

不知道您使用的是什么IDE,但是如果您需要在C#和VB.NET之间转换更多代码,或者需要在C#和VB.NET之间转换更多代码,您可以使用SharpDevelop(菜单工具>将代码转换为>C#和Boo)(您也可以转换为Python、Ruby和Boo)

例如,您用C#编写的代码:

已转换为VB.NET:

Public Shared Event CallEvent As ValueEnterEventHandler

Public Shared Sub DispatchCompanyCall(moduleName As String)
    If IsReady AndAlso CallEvent IsNot Nothing Then
        RaiseEvent CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub
非常有用。 试试看

public static event ValueEnterEventHandler CallEvent;

public static void DispatchCompanyCall(string moduleName)
{
    if (IsReady && CallEvent != null)
    CallEvent(null, new ValueEnterEventArgs(moduleName, false));
}
Public Shared Event CallEvent As ValueEnterEventHandler

Public Shared Sub DispatchCompanyCall(moduleName As String)
    If IsReady AndAlso CallEvent IsNot Nothing Then
        RaiseEvent CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub