c# - 检查数组中的按钮是否被点击

标签 c#

我正在为一项大学作业开发一款游戏,需要在点击按钮时执行一个 Action ,但这比这更复杂。

我已经创建了一个包含 100 个按钮 (10x10) 的二维数组来创建一个平铺的、可点击的界面(这是项目简介的要求,所以我绝对不能更改此方法)。每个按钮被随机分配一个特定的 BackgroundImage 来组成一个冒险 map (草、水、树、矿石等),如果它们有特定的 BackgroundImage 并被点击(树木或矿石),我需要将金币添加到玩家的他们“收集”元素的黄金值(value)。

按钮数组是这样生成的:

Button[,] btn = new Button[10, 10];
for (int x = 0; x < 10; x++)
{
    for (int y = 0; y < 10; y++)
    {
        btn[x, y] = new Button();

        btn[x, y].SetBounds((x * 50) + 8, (y * 50) + 16, 50, 50);
        btn[x, y].Name = x + "," + y;
        Controls.Add(btn[x, y]);
    }
}

我如何才能检测到何时单击了这些按钮之一,并能够根据应用到它的 BackgroundImage 采取相应的行动?

最佳答案

您可以像这样将相同的事件处理程序附加到所有按钮:

btn[x, y].Click += btnClick;

而且,在您的 btnClick 中,您可以获得点击的按钮,您可以做任何您想做的事情:

public void btnClick(object sender, EventArgs e)
{
   Button myButton = sender as Button;
   myButton.BackgroundImage = ...
}

关于c# - 检查数组中的按钮是否被点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21322723/

相关文章:

c# - HttpRequest.ServerVariables ["http_user_agent"] 与 HttpRequest.UserAgent 之间的问题

c# - ETW EventSource .NET 4.5的滚动文件

c# - 是否可以使用 IntPtr 在另一个程序中激活选项卡?

c# - WPF - 当 UpdateSourceTrigger=Explicit 时如何向数据绑定(bind) ItemsControl 添加/删除项目

c# - 如何在 C# 中比较标志?

c# - 为什么 Windows Phone 7 不完全支持 C# 规范?

c# - LinkedIn - 是否可以在我的应用程序的用户组中发帖?

c# - 使用 Linq(EF 核心)仅选择特定字段

c# - Newtonsoft.Json 用下划线替换空格 C# to JSON Serialize

c# - Selenium - PhantomJS TypeError - 未定义不是构造函数(评估 '_getTagName(currWindow).toLowerCase()')字符串