我正在编写一个使用VB.Net
的{{1}}程序。它带有TeamSpeak SDK
个示例,我毫不费力地将它们转换为C#
。
但是,我正在尝试为名为Connection的类实现事件处理程序。在VB
中,当我在Connection变量后点击一个点时,C#
显示一个包含所有选项的下拉列表:
但是当我处理VB代码(也在Intellisense
中)时,做同样的事情不包括事件:
请注意,显示的属性和方法相同,只是无法选择事件。我对VS 2017
使用了相同的“ using”,对C#
使用了“导入”来引用VB
。我有数百行有效的VB程序,该程序成功实现了TeamSpeak.Sdk.Client
,所以几乎所有程序都在工作。直到现在,我想添加事件处理才遇到麻烦。
接下来我应该尝试什么?
答案 0 :(得分:4)
此C#代码的VB等效项:
myObject.SomeEvent += SomeMethod;
是这个
AddHandler myObject.SomeEvent, AddressOf SomeMethod
如果您输入AddHandler
关键字,则Intellisense将显示可用事件。对于C#代码,您可以在与属性或方法相同的上下文中选择一个事件,因此将它们一起显示是有意义的。在VB中,唯一可以使用事件的时间是在AddHandler
语句中,因此您只会在该上下文中看到事件。
答案 1 :(得分:-1)
在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
的参数是可选的-如果您不使用sender
或e
,请不要将其放在声明中
要使其正常工作,需要使用WithEvents
关键字声明“控件”:
Public WithEvents Button1 As New Button