Visual Studio 智能感知不显示事件

Visual Studio Intellisense not Showing Events

我正在编写一个使用 TeamSpeak SDKVB.Net 程序。它带有 C# 个示例,我可以毫不费力地将它们转换为 VB.

但是,我正在尝试为一个名为 Connection 的 class 实现一个事件处理程序。在 C# 中,当我在 Connection 变量后点击一个点时,Intellisense 显示一个包含所有选项的下拉列表:

但是当我处理 VB 代码时(也在 VS 2017 中),做同样的事情不包括事件:

注意显示的属性和方法是一样的,只是没办法select事件。我对 C# 使用相同的 "using",对 VB 使用相同的 "Imports" 来引用 TeamSpeak.Sdk.Client。我有一个数百行的工作 VB 程序,它成功地实现了 TeamSpeak SDK,所以几乎一切正常。直到现在我想添加事件处理才让我 运行 陷入困境。

接下来我应该尝试什么?

此 C# 代码的 VB 等价物:

myObject.SomeEvent += SomeMethod;

这是:

AddHandler myObject.SomeEvent, AddressOf SomeMethod

如果您键入 AddHandler 关键字,则 Intellisense 将显示可用事件。对于 C# 代码,您可以在与 属性 或方法相同的上下文中 select 一个事件,因此将它们一起显示是有意义的。在 VB 中,您只能在 AddHandler 语句中使用事件,因此您只能在该上下文中看到事件。

VB 中有两种连接事件的方法。 @jmcilhinney 显示的 AddHandler 方法,或者使用 Handles 关键字,如下所示:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'do something useful with the button click
End Sub

如果这样做,您将在 Handles 关键字后获得 Intellisense。 Sub 的参数是可选的 - 如果您没有使用 sendere,请不要将它们放在声明中

为了使其工作,需要使用 WithEvents 关键字声明 "Control":

Public WithEvents Button1 As New Button