C# Handles子句需要在VB.net中包含类型或其基类型之一中定义的WithEvents变量

C# Handles子句需要在VB.net中包含类型或其基类型之一中定义的WithEvents变量,c#,vb.net,C#,Vb.net,我有一个VB.net项目,它是使用Sharpdevelop从c#转换而来的。当我打开项目时,我可以很好地运行它。然后我在表单上添加了一个按钮,突然出现了12个错误,上面写着: Handles子句需要在包含类型或其基类型之一中定义的WithEvents变量 对于如下所示的行: Private Sub topListButton_Click(sender As Object, e As EventArgs) _ Handles topListButton.Click 这是从c#转换而来的代

我有一个VB.net项目,它是使用Sharpdevelop从c#转换而来的。当我打开项目时,我可以很好地运行它。然后我在表单上添加了一个按钮,突然出现了12个错误,上面写着:

Handles子句需要在包含类型或其基类型之一中定义的WithEvents变量

对于如下所示的行:

Private Sub topListButton_Click(sender As Object, e As EventArgs) _
    Handles topListButton.Click
这是从c#转换而来的代码。我不知道为什么它最初运行,但在我对项目进行了更改后,它就被炸毁了

我尝试用以下方法删除部分线路:

Handles topListButton.Click

但是现在按钮点击了就不会开火了。如果有任何线索,我们将不胜感激。

VB.Net有一些奇怪的错误(或功能,取决于谁问)。
如果要使用
Handles
关键字附加事件处理程序,则必须使用
WithEvents
关键字声明引发事件的对象。
奇怪的是,无论是否使用
WithEvents
声明,都会引发事件,其唯一目的是允许您使用
Handles
关键字。您仍然可以使用该语句将事件附加到处理程序。

您可以看到一个代码示例。

保存
topListButton\u单击
方法(Ctrl-C),删除整个方法,通过双击WinForms designer中的
topListButton
重新创建,然后再次插入正文(Ctrl-V).

您是否在包含类型中定义了一个WithEvents变量?
将“WithEvents”添加到按钮声明中(您可能会在设计器代码中找到它):
Private WithEvents TopList button As button
谢谢。我该怎么做?我是否将Private WithEvents topListButton添加为按钮?否。您查找topListButton定义。它已经被声明(正如我写的,可能是在设计器代码中),并将关键字WithEvents添加到它的声明中。
WithEvents
将该字段变成一个属性,在其setter中添加和删除处理程序。否则,编译器将无法连接事件处理程序。这没什么奇怪的。