动态按钮上的AddHandler事件,VB.NET中的实例属性不正确



我是自定义类的新手。我有一门课叫"游戏"。在类中,我有一个名为"addGame()"的方法,它创建了一个称为"pBox"的动态图片框。创建控件后,我将执行以下操作来注册一个点击事件:

AddHandler pBox.Click, AddressOf Me.launchGame

这里是启动游戏:

Public Sub launchGame()
MsgBox(Me.name)
End Sub

问题是,"Me.name"总是最近添加的实例名称,而不是我点击的那个


根据一个建议,我也尝试了这个:

Public Sub launchGame(ByVal sender As Object)
MsgBox(sender.name)
End Sub

但表示,现在">AddHandler pBox.Click,AddressOfMe。launchGame">

方法"Public Sub launchGame(sender As Object)"没有与委托"delegate Sub EventHandler(sender As Object,e As System.EventArgs)"兼容的签名

表示:">AddHandler pBox.Click,AddressOf Me。launchGame(Me)">

AddressOf操作数必须是不带括号的方法的名称


Public Sub launchGame(ByVal sender As Object, ByVal sender as EventArgs)
MsgBox(sender.name)
End Sub

现在没有错误,但是消息框是空白的。

我认为问题在于pBox始终是最新的pictureBox控件。我基于在Visual Basic.NET和Visual C#.NET中创建控件数组(MSDN)创建了一个控件数组。

现在,我在pBoxArray类的AddNewpBox()方法中执行AddHandler。我还创建了一个列表来处理"游戏"类,正如大卫·布鲁诺所建议的那样。然后我将pictureBox"Tag"属性设置为"games"数组中游戏的索引。

所以现在我的点击处理程序如下所示,而且它似乎工作得很好。

Public Sub pBoxClick(ByVal sender As Object, e As EventArgs)
MsgBox(games(sender.tag).name)
End Sub

相关内容

  • 没有找到相关文章

最新更新