vb.net:扫雷点击事件

时间:2011-12-08 16:31:35

标签: vb.net winforms events handler minesweeper

我已经开始使用动态创建的按钮网格在vb.net中制作扫雷游戏,这些按钮存储在2D数组中。我有另一个2D数组(Boolean),它跟踪某个位置是被覆盖还是被覆盖。我有一个更新网格'可以在任何时候运行的方法,以更新网格,以便在屏幕上显示所有应该被揭开的内容。

我如何制作它,以便在点击任何按钮时,该按钮的状态设置为未覆盖?我尝试使用事件处理程序,但我无法传递任何参数,我需要知道按钮的x和y位置,所以我可以找到正确的按钮。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将所有按钮放在Dictionary(Of Button, Boolean)中,每个按钮的值为True。稍后在Click事件处理程序中将发件人强制转换为Button,并将字典中的相应条目设置为False

有点像这样(原谅我糟糕的VB,我通常使用C#):

 Buttons = new Dictionary(Of Button, Boolean)()
 For Each button in YourButtonArray
     Buttons.Add(button, True)
 End

 ' Click handler:
 Dim clickedButton = CType(sender, Button)
 Buttons(clickedButton) = False

更新:或者 - 正如@Hans Passant在您的问题的评论中指出的那样 - 您可以使用Tag属性,这会更简单。