我有一个使用Sharpdevelop从c#转换而来的VB.net项目。当我打开项目时,我可以很好地运行它。然后我在表单上添加了一个按钮,突然弹出了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关键字。您仍然可以使用Add handler语句将事件附加到处理程序。
您可以看到一个代码示例here

10-01 01:54