我如何获得被点击的PictureBox的数量?

时间:2019-01-15 15:20:49

标签: c#

我制作了Tic Tac Toe游戏,我有9个单元格可供玩家单击。最初,单元格没有任何图片,但是单击单元格时,其图片必须更改。如何在没有代码重复的情况下为每个单元格创建此事件?

1 个答案:

答案 0 :(得分:0)

单击事件的签名具有“发送者”对象。您可以将其用作参考。将其强制转换为适当的类型,您可以直接访问其所有公共属性。

您应该能够执行以下操作:

protected void pictureClick(Object sender, EventArgs e) {
    PictureBox pic = sender as PictureBox;

    if (pic != null) {
        // set the image based on which players turn it is.
    } 
}

现在每个图片框都将其onClick事件设置为此一个pictureClick函数。

---编辑---

我还要补充一点,以这种方式使用独立的UI控件对于大型方块游戏来说效率极低。对于3x3的井字游戏网格,可能不错,但对于8x8的棋盘,则所有64个方格的刷新时间将很明显,因为页面上的每个UI组件都有其Paint()方法,当窗口刷新。我是根据经验讲的。我曾经尝试使用这种方法,将10x10面板组件的网格与基于游戏状态数据的自定义绘制方法一起使用,并且每次调整窗口大小时,游戏都会挂几秒钟,而所有内容都会刷新。