0

我知道控件数组实际上不再存在,但我需要一些可以与我的代码相关的东西。我正在制作一个带有 32 个网格的购物清单游戏,单击时会翻转。它们实际上是名为 pbxTile1 - pbxTile32 的 PictureBox。我感觉你已经知道我要说什么了。

我的代码示例:

  Private Sub pbxTile1_Click(sender As Object, e As EventArgs) Handles pbxTile1.Click

    If TileFlag(1) = 0 Then Exit Sub
    My.Computer.Audio.Play(My.Resources.Tile_Flip, AudioPlayMode.Background) : Application.DoEvents()
    Me.pbxTile1.BackgroundImageLayout = ImageLayout.Stretch
    Me.pbxTile1.BackgroundImage = My.Resources.FLIP01 : Application.DoEvents() : System.Threading.Thread.Sleep(50)
    Me.pbxTile1.BackgroundImage = My.Resources.FLIP02 : Application.DoEvents() : System.Threading.Thread.Sleep(50)
    Me.pbxTile1.BackgroundImage = My.Resources.FLIP03 : Application.DoEvents() : System.Threading.Thread.Sleep(50)

    Dim GroceryValue = TileItem(1)
    Call Get_Grocery(GroceryValue)
    Me.pbxTile1.BackgroundImageLayout = ImageLayout.None
    Me.pbxTile1.BackgroundImage = My.Resources.ResourceManager.GetObject(GroceryResource) : Application.DoEvents()

您可以看到我的问题 - 这是子程序的一小部分,我需要重新创建 32 次。但我相信你们中的一个聪明的小伙子可以想出一些办法来减轻我的痛苦!我见过标记、列表和索引——但不知道如何应用它,这是最好的,需要一些例子!

4

1 回答 1

0

没关系,我找到了!我的话效果很好:

我没有意识到事件处理程序可以处理多个控件!

我没有复制我的代码(32 次!),而是将 Sub 更改为:

Private Sub pbxTile_Click(ByVal sender As Object, e As System.EventArgs) Handles pbxTile1.Click, pbxTile2.Click, pbxTile3.Click, pbxTile4.Click, pbxTile5.Click, pbxTile6.Click, _
    pbxTile7.Click, pbxTile8.Click, pbxTile9.Click, pbxTile10.Click, pbxTile11.Click, pbxTile12.Click, pbxTile13.Click, pbxTile14.Click, pbxTile15.Click, pbxTile16.Click, _
    pbxTile17.Click, pbxTile18.Click, pbxTile19.Click, pbxTile20.Click, pbxTile21.Click, pbxTile22.Click, pbxTile23.Click, pbxTile24.Click, pbxTile25.Click, pbxTile26.Click, _
    pbxTile27.Click, pbxTile28.Click, pbxTile29.Click, pbxTile30.Click, pbxTile31.Click, pbxTile32.Click

所以基本上如果单击 32 个框中的任何一个,它都会调用相同的 Sub。为了区分每个 PictureBox(这是我真正坚持的一点),我使用了 DirectCast:

For z = 1 To 32
        If DirectCast(sender, PictureBox).Name = "pbxTile" & z And TileFlag(z) = 0 Then Exit Sub
    Next

我不确定这是否是最精简的方式,但它确实是一种享受,并为我节省了一堆我不需要的代码!

于 2015-04-20T22:38:35.747 回答