我正在尝试将扫雷游戏作为vb中的一个项目,但我无法理解这一点,任何帮助都表示赞赏。
我在一个表单上有一个包含100个图片框的网格,然后代码随机选择一个10x10数组中的几个地方来标记为“炸弹”(作为一分钟的字符串)。我的问题是我不知道如何将点击的框与数组中的位置联系起来。
我知道如何使用DirectCast,但在这种情况下无法实现。我还想过尝试将图片框用作对象,但我不确定它是如何工作的。
希望有人可以提供帮助!
答案 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()属性方法,你也必须这样做。