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

时间:2015-04-19 12:23:43

标签: c# vb.net

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

  

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

对于看起来像这样的行:

Private Sub topListButton_Click(sender As Object, e As EventArgs) _
    Handles topListButton.Click

这是从c#转换的代码。我不知道为什么它最初运行但在我改变项目后遭到轰炸。

我尝试删除部分行:

Handles topListButton.Click

但现在按钮点击不会触发。任何线索都将非常感激。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

保存topListButton_Click方法的主体(Ctrl-C),删除整个方法,双击WinForms设计器中的topListButton重新创建它,然后再次插入主体(Ctrl -V)。