2015-08-30 62 views
-2

我試圖將以下c#代碼轉換爲vb.net,但在vb轉換行中引發了錯誤:Me.ZBAPI_MEDDOC_CREATE_LINKCompleted將c#轉換爲vb事件,並且不能直接調用

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

+1

順便說一句,有很多的在線轉換器的東西往往是非常方便,例如http://converter.telerik.com/ – Rhumborl

+0

@Rhumborl我試圖用它轉換他的代碼,它是相同的結果(沒有RaiseEvent調用)。 – Drarig29

+1

您必須將足夠的代碼粘貼到轉換器中才能知道'ZBAPI_MEDDOC _.....'是一個事件。 –

回答

3

你需要在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 
+0

'invokeArgs.Error'屬性是否必須用'[]'寫入? – Drarig29

+0

@ Drarig29由於'Error'是[VB.NET中的保留字](https://msdn.microsoft.com/en-us/library/ksh7h19t(v = vs.90).aspx),因此您需要轉義它,就像在C#中使用['@]一樣(https://msdn.microsoft.com/en-us/library/x53a06bb.aspx),例如'public void RunEvent(@event someEvent){}' – Rhumborl

+0

謝謝,它的作品! – mayaby