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

(VB) How to allow a clicked picturebox to know which part of the array it is?

我正在尝试将扫雷游戏作为 vb 中的一个项目,但我无法弄清楚这一点,不胜感激。

我在一个表格上有一个由 100 个图片框组成的网格,然后编写代码以在 10x10 数组中随机选择几个位置以标记为 "bomb"(当时是一个字符串)。我的问题是我不知道如何将单击的框与其在数组中的位置相关联。

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

希望有人能提供帮助!

One way would be to embed the position in the Name property of each PB (then parse it in the click handler).

Parsing in the click handler sounds like a good idea. How would I go about doing this? Sorry, I have little experience.

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

现在您可以使用通用处理程序和 String.Split() 检索 row/column:

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 个 PictureBoxes...不好玩;但如果你也使用 Tag() 属性 方法,你也必须这样做。