将c转换为vb是一个事件,不能直接调用

本文关键字:事件 一个 不能 调用 转换 vb | 更新日期: 2023-09-27 18:10:35

我正试图将以下c#代码转换为vb.net,但在转换为vb的行中出现错误:Me.ZBAPI_MEDDOC_CREATE_LINKCompleted

c#:

private void OnZBAPI_MEDDOC_CREATE_LINKOperationCompleted(object arg)
{
    if ((this.ZBAPI_MEDDOC_CREATE_LINKCompleted != null))
    {
        System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
        this.ZBAPI_MEDDOC_CREATE_LINKCompleted(this, new ZBAPI_MEDDOC_CREATE_LINKCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
    }
}

vb:

Private Sub OnZBAPI_MEDDOC_CREATE_LINKOperationCompleted(ByVal arg As Object)
    If (Me.ZBAPI_MEDDOC_CREATE_LINKCompleted IsNot Nothing) Then
        Dim invokeArgs As System.Web.Services.Protocols.InvokeCompletedEventArgs = DirectCast(arg, System.Web.Services.Protocols.InvokeCompletedEventArgs)
        Me.ZBAPI_MEDDOC_CREATE_LINKCompleted(Me, New ZBAPI_MEDDOC_CREATE_LINKCompletedEventArgs(invokeArgs.Results, invokeArgs.[Error], invokeArgs.Cancelled, invokeArgs.UserState))
    End If
End Sub

我应该如何转换c#行this.ZBAPI_MEDDOC_CREATE_LINKCompleted

将c转换为vb是一个事件,不能直接调用

您需要在VB.NET中使用RaiseEvent,它也不需要null检查是否附加了事件侦听器:

Private Sub OnZBAPI_MEDDOC_CREATE_LINKOperationCompleted(ByVal arg As Object)
    Dim invokeArgs As System.Web.Services.Protocols.InvokeCompletedEventArgs = DirectCast(arg, System.Web.Services.Protocols.InvokeCompletedEventArgs)
    RaiseEvent ZBAPI_MEDDOC_CREATE_LINKCompleted(Me, New ZBAPI_MEDDOC_CREATE_LINKCompletedEventArgs(invokeArgs.Results, invokeArgs.[Error], invokeArgs.Cancelled, invokeArgs.UserState))
End Sub