如何从VB.Net调用C#事件

Cur*_*ind 2 c# vb.net dll

我有一个C#类库.在那堂课里,我把一个事件宣布为一个财产

private static event MouseEventHandler s_MouseClick;
public static event MouseEventHandler MouseClick
{
    add
    {
        s_MouseClick += value;
    }
    remove
    {
        s_MouseClick -= value;
    }
} 
Run Code Online (Sandbox Code Playgroud)

我有另一个用VB.net编写的项目,点击一个按钮我想做这样的事情:

cls.MouseClick += cls_MouseClick;

void cls_MouseClick(object sender, KeyPressEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)

这就是我在C#中的表现.但是我如何在VB中做到这一点?

Kon*_*lph 7

在VB中,要注册事件处理程序,请使用AddHandler:

AddHandler cls.MouseClick, AddressOf cls_MouseClick
Run Code Online (Sandbox Code Playgroud)

使用RemoveHandler注销事件处理程序.

或者,您可以使用声明性语法.即:声明成员如下:

Private WithEvents cls As YourClassType
Run Code Online (Sandbox Code Playgroud)

并声明这样的处理程序:

Private Sub cls_MouseClick(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles cls.MouseClick
End Sub
Run Code Online (Sandbox Code Playgroud)

现在您不需要手动注册处理程序.