DataAnalyst1
DataAnalyst1

Reputation: 147

C# to VB.NET Events

I'm having problems translating this into VB:

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

Also this doesn't seem to work

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

}

Error MSG:

'Public Shared Shadows Event ChangeMessage(message As String)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

VB Code:

I used developer fusion to convert it

Here nothing is underlined and says: End of statement expected

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

for the above line

'Public Shared Event ChangeMessage(message As String)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

Upvotes: 0

Views: 196

Answers (1)

Dave Doknjas
Dave Doknjas

Reputation: 6542

Two things - drop the " = Nothing" and use the hidden VB 'Event' field - or drop the conditional altogether since VB does the check within the '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

Upvotes: 1

Related Questions