Конвертировать событие из C # в VB.Net ... как? - PullRequest
2 голосов
/ 13 мая 2011

Мне нужно преобразовать код 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, чтобы вызвать событие

Что мне написать? Вы можете мне помочь? Спасибо.

Ответы [ 4 ]

5 голосов
/ 13 мая 2011

В 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
1 голос
/ 13 мая 2011

Эх ... Делайте то, что говорится в сообщении об ошибке, и используйте 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
0 голосов
/ 13 мая 2011

Не знаю, какую 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

Очень полезно. Попробуйте.

0 голосов
/ 13 мая 2011

Хм, делайте то, что говорится в сообщении об ошибке.Смотрите пример документации в RaiseEvent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...