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

本文关键字:VB Net 如何 转换 事件 | 更新日期: 2023-09-27 17:56:24

我必须将 C# 代码转换为 VB.NET,但我有一些问题......你可以帮我吗?

这是 C# 源:

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
        CallEvent(Nothing, New ValueEnterEventArgs(moduleName, False))
    End If
End Sub

但我有这条错误消息:CallEvent 是一个事件,不能直接调用,使用 RaiseEvent 语句引发事件

我应该写什么?你可以帮我吗?谢谢。

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

有了 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 之间转换更多的代码,反之亦然,你可以使用SharpDevelop(菜单工具>将代码转换为> C# | VB.NET(你也可以转换为Python,Ruby和Boo)

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

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

转换为 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

非常有用。试一试。