如何在Visual Studio中基于变量调用对象?

时间:2012-04-24 23:00:38

标签: vb.net visual-studio variables object picturebox

所以我正在尝试编写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 

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

1 个答案:

答案 0 :(得分:1)

要检查所有图片框,请将所有图片框放入一个数组中,然后使用每个循环来检查它们。

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

要检查特定的图片框,请忽略每个循环,并使用索引查找要检查的图片框。注意:索引从零开始,因此在这种情况下,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