2016-11-26 2 views
-1

Вот интерфейсобработчика событий в C# не преобразует правильно VB.net

Public Interface ILoginConductor 
    Inherits IHandle(Of LoginEvent) 
    Inherits IHandle(Of LogoutEvent) 
    Inherits IHandle(Of ExitEvent) 
End Interface 

В C# здесь является метод, который использует интерфейс

public void Handle(LoginEvent message) 
{ 
    LoginWindow loginWindow = new LoginWindow(); 
    loginWindow.Login += new EventHandler<LoginEventArgs>(this.LoginWindow_Login); 
    loginWindow.Cancel += new EventHandler(LoginWindow_Cancel); 
    loginWindow.ShowDialog(); 
} 

И это превращается в это в VB .Net

Public Sub Handle(message As LoginEvent) Implements ILoginConductor.Handle 
    Dim loginWindow As New LoginWindow() 
    loginWindow.Login += New EventHandler(Of LoginEventArgs)(AddressOf Me.LoginWindow_Login) 
    loginWindow.Cancel += New EventHandler(AddressOf LoginWindow_Cancel) 
    loginWindow.ShowDialog() 
End Sub 

Но компилятор генерирует ошибку, которая говорит, что я должен использовать RaiseEvent. Может кто-то, пожалуйста, помогите мне показать мне, как исправить мой код.

+0

Что значит «конвертирует в»? Вы используете инструмент преобразования? Если да, то какой? Проблема в том, что у VB нет оператора + =. Вместо этого вам нужно использовать оператор [RaiseEvent] (https://msdn.microsoft.com/en-us/library/fwd3bwed.aspx). – Clint

+2

@Clint: эквивалент V + .NET '+ =' вводит [** оператор AddHandler **] (https://msdn.microsoft.com/en-us/library/7taxzxka.aspx), а не RaiseEvent. –

+0

@VisualVincent это! Глупый промах с моей стороны. – Clint

ответ

0

Возможно, компилятор сообщает вам, что события в коде VB должны запускаться иначе, чем C#. Перед вызовом метода события вам необходимо перенести ключевое слово «raiseevent» (например, raiseevent Login_WindowCancel()). Посмотрите здесь https://msdn.microsoft.com/en-us/library/fwd3bwed.aspx

+1

Компилятор неправильно интерпретирует его. Фактическим эквивалентом '+ =' в этом случае является [** оператор AddHandler **] (https://msdn.microsoft.com/en-us/library/7taxzxka.aspx). –

+0

Также см. [** Практическое руководство: подписка на события и отказ от подписки (руководство по программированию на C#) **] (https://msdn.microsoft.com/en-us/library/ms366768.aspx). –

+0

Спасибо за вашу помощь, но я все еще обеспокоен. – user3418258

Смежные вопросы