C#中的事件处理程序无法正确转换为VB.net

时间:2016-11-26 16:27:23

标签: 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。有人可以帮我告诉我如何修复我的代码。

1 个答案:

答案 0 :(得分:0)

编译器可能会告诉您VB代码中的事件必须以与C#不同的方式触发。你需要将&#34; raiseevent&#34;事件方法调用之前的关键字(例如raiseevent Login_WindowCancel())。看看https://msdn.microsoft.com/en-us/library/fwd3bwed.aspx