2014-03-25 59 views
0

我有翻譯成VB這個問題:C#到VB.NET活動

public delegate void ChangeMessageEvent(string message); 
public static event ChangeMessageEvent ChangeMessage = null; 

而且這似乎並沒有工作

if (oStatusManager.ChangeMessage != null) 
     { 
      oStatusManager.ChangeMessage(message); 
      Application.DoEvents(); 

} 

錯誤味精:

'公共共享陰影事件ChangeMes​​sage(消息作爲字符串)'是一個 事件,無法直接調用。使用'RaiseEvent'語句來 引發一個事件。

VB代碼:

我用過的顯影劑的融合,將其轉化

這裏沒有什麼是強調說:語句的結束預計

Public Delegate Sub ChangeMessageEvent(message As String) 
Public Shared Event ChangeMessage As ChangeMessageEvent = Nothing 

If oStatusManager.ChangeMessage IsNot Nothing Then 
    oStatusManager.ChangeMessage(message) 
    Application.DoEvents() 
End If 

爲上述行

'Public Shared Event ChangeMes​​sage(message As Strin g)'是一個事件, ,不能直接調用。使用'RaiseEvent'語句來提高事件的 。

+1

完全一樣錯誤消息狀態。這不是一種方法。 – PaulG

+0

這在C#中完美工作,我怎樣才能讓它在VB中工作? – DataAnalyst1

+0

向我們展示您的VB代碼。可能能夠告訴你它有什麼問題。 – PaulG

回答

1

兩件事情 - 去掉「=無」,並使用隱藏VB「事件」字段 - 或者完全放棄的條件,因爲VB做的檢查「的RaiseEvent」內:

Public Delegate Sub ChangeMessageEvent(ByVal message As String) 
Public Shared Event ChangeMessage As ChangeMessageEvent 

Private Sub test() 
    If oStatusManager.ChangeMessageEvent IsNot Nothing Then 
     RaiseEvent oStatusManager.ChangeMessage(message) 
     Application.DoEvents() 
    End If 
End Sub 
+0

感謝您的答覆隊友,我仍然得到「委託類'ChangeMes​​sageEvent'衝突在'oStatusManager'類中隱式聲明事件'ChangeMes​​sage' – DataAnalyst1

+0

然後刪除條件 - 即,根本不需要「If oStatusManager ...」條件 –

+0

我試過了,仍然得到定義相同的錯誤:Public Change Event ChangeMes​​sage As ChangeMes​​sageEvent – DataAnalyst1