(VB)如何让点击的图片框知道它是哪个部分?

时间:2015-08-10 17:09:14

标签: arrays vb.net picturebox minesweeper

我正在尝试将扫雷游戏作为vb中的一个项目,但我无法理解这一点,任何帮助都表示赞赏。

我在一个表单上有一个包含100个图片框的网格,然后代码随机选择一个10x10数组中的几个地方来标记为“炸弹”(作为一分钟的字符串)。我的问题是我不知道如何将点击的框与数组中的位置联系起来。

我知道如何使用DirectCast,但在这种情况下无法实现。我还想过尝试将图片框用作对象,但我不确定它是如何工作的。

希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:1)

  

一种方法是将位置嵌入每个PB的Name属性中   (然后在点击处理程序中解析它。)

     

解析点击处理程序听起来是个好主意。我怎么去   关于这样做?对不起,我没什么经验。

你可以简单地命名所有具有相同前缀的PictureBox,然后是行和列;这三个部分用下划线分开。例如,第2行第3列中的PictureBox可以命名为“pb_2_3”。

现在您可以使用公共处理程序和String.Split()来检索行/列:

Private Sub pbs_Click(sender As Object, e As EventArgs) Handles pb_2_3.Click, pb_2_4.Click
    Dim pb As PictureBox = DirectCast(sender, PictureBox)
    If pb.Name.ToLower.StartsWith("pb_") Then
        Dim values() As String = pb.Name.Split("_")
        If values.Length = 3 Then
            Dim row As Integer = CInt(values(1))
            Dim col As Integer = CInt(values(2))

            Debug.Print(String.Format("Name: {0}, Row: {1}, Col: {2}", pb.Name, row, col))
        End If
    End If
End Sub

显然,这意味着您必须手动重命名所有100个PictureBox ...不好玩;但如果你也使用Tag()属性方法,你也必须这样做。