1

MasterMind のゲームを書こうとしているのですが、問題があります。

10 の異なる行に 40 の画像ボックスを設定しています。コードをコピーして貼り付けて画像ボックスの名前を変更するのではなく、1 つのコードで 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 に答える