0

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

AddHandler pBox.Click, AddressOf Me.launchGame

这是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, AddressOf Me.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

现在没有错误,但 msgBox 是空白的。

4

1 回答 1

0

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

现在我在我的 pBoxArray 类的 AddNewpBox() 方法中执行 AddHandler。正如 David Brunow 所建议的,我还创建了一个列表来处理“游戏”类。然后我将pictureBox“Tag”属性设置为“games”数组中游戏的索引。

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

Public Sub pBoxClick(ByVal sender As Object, e As EventArgs)
    MsgBox(games(sender.tag).name)
End Sub
于 2012-11-30T16:08:53.577 回答