1

所以我正在尝试编写 MasterMind 游戏,但我遇到了问题

我在 10 个不同的行中设置了 40 个图片框,我想让一个代码处理所有 10 行,而不是复制和粘贴代码并更改图片框的名称。我一直在尝试使用变量来实现这一点,但如果可能的话,那么我不知道正确的方法。
这就是我现在所拥有的:

 Dim X As Integer
 Dim Y As Integer
 Private Sub ButtonCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCheck.Click
    If HighlightRow1 = True Then
        X = 1
        Y = 2
        Check1()
    ElseIf HighlightRow2 = True Then
        X = 4
        Y = 5
        Check1()
    ...
    EndIf
  End Sub
  Private Sub Check1()
      If PictureBox(X).Tag = "Red" //'Getting this error: Class 'System.Windows.Forms.PictureBox' cannot be indexed because it has no default property.

         blah blah blah
      ElseIf PictureBox(X).Tag = "Green" Then
         blah blah blah
      ...
      EndIf  

      If Picturebox(Y).Tag = "Red" Then
         blah blah blah
      ...
      End If 

有没有办法做到这一点?我是编程新手,所以如果这是一个非常简单的问题,我很抱歉。

4

1 回答 1

1

要检查所有图片框,请将所有图片框放入一个数组并使用 for each 循环来检查它们。

Private Sub Check1()
    Dim picBoxArr() As PictureBox = {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    For Each picBox in picBoxArr
        If picBox.Tag = "Red" Then
            'yada yada
        End If
    Next
End Sub

要检查特定的图片框,请省略 for each 循环并使用索引来处理要检查的图片框。注意:索引从零开始,因此在这种情况下,picturebox1 的索引为零。

Private Sub Check1()
    Dim picBoxArr() As PictureBox = {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    If picBoxArr(0).Tag = "Red" Then
            'yada yada
    End If
End Sub

您可以在此处阅读有关数组的更多信息http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx

于 2012-04-25T00:02:06.353 回答