Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在VisualStudio中基于变量调用对象?_Vb.net_Visual Studio_Variables_Object_Picturebox - Fatal编程技术网

Vb.net 如何在VisualStudio中基于变量调用对象?

Vb.net 如何在VisualStudio中基于变量调用对象?,vb.net,visual-studio,variables,object,picturebox,Vb.net,Visual Studio,Variables,Object,Picturebox,所以我想写一个智囊团游戏,但我有个问题 我在10个不同的行中设置了40个PictureBox,我希望有一个代码来处理所有10行,而不是复制和粘贴代码以及更改PictureBox的名称。我一直试图使用一个变量来实现这一点,但如果可能的话,我不知道正确的方法。 这就是我现在拥有的: Dim X As Integer Dim Y As Integer Private Sub ButtonCheck_Click(ByVal sender As System.Object, ByVal e As S

所以我想写一个智囊团游戏,但我有个问题

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

 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 

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

要检查所有图片库,请将所有图片库放入一个数组中,并使用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
要检查特定的picturebox,请省略for each循环,并使用索引寻址要检查的picturebox。注意:索引从零开始,因此在这种情况下picturebox1的索引为零

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

您可以在此处阅读有关数组的更多信息

要检查所有PictureBox,请将所有PictureBox放入一个数组中,并使用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
要检查特定的picturebox,请省略for each循环,并使用索引寻址要检查的picturebox。注意:索引从零开始,因此在这种情况下picturebox1的索引为零

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

如果HighlightRow1=True是冗余的,并且在功能上等同于更简洁的,如果HighlightRow1在需要对象引用的地方使用类名,则可以在此处阅读有关数组的更多信息。最好从一本书或一所学校学习面向对象编程,当你在基础知识方面遇到困难时,反复尝试会有很多错误。使用40个控件而不是1个控件是另一种类似的尝试。你想用这些大量的PictureBox实现什么?哈哈,我正在写一个策划程序。这是一个通常由两人参与的游戏。我现在差不多完成了。如果HighlightRow1=True,那么它是多余的,并且在功能上等同于更简洁的如果HighlightRow1,那么它的价值在于使用一个需要对象引用的类名。最好从一本书或一所学校学习面向对象编程,当你在基础知识方面遇到困难时,反复尝试会有很多错误。使用40个控件而不是1个控件是另一种类似的尝试。你想用这些大量的PictureBox实现什么?哈哈,我正在写一个策划程序。这是一个通常由两人参与的游戏。我现在差不多完成了。非常感谢你!这正是我想要的:谢谢你!这正是我想要的:D