c# - 如何将 Click 事件动态附加到多个按钮?
问题描述
我正在尝试用 C# 开发基诺游戏,所以我有 80 个按钮,每个按钮都有 1-80 的数字,如下所示:
所以我想做的是每个用户应该选择 10 个数字(不是更少,不是更多),当一个按钮被点击时,按钮的背景颜色变成绿色,但我想知道如何在不调用的情况下完成每个按钮上的事件。这些数字应保存在数据库中。
我尝试在数组上添加按钮并像这样循环遍历数组:
var buttons = new[] { button1, button2, button3, button4, button5, ..... };
foreach (var button in buttons)
{
if (button.Focused)
{
button.BackColor = Color.Green;
}
}
解决方案
您可以为每个按钮分配相同的事件处理程序:
foreach (var button in buttons) {
button.Click += (sender, e) => {
((Button)sender).BackColor = Color.Green;
};
}
如果要添加到表单上的所有按钮,可以在表单构造函数中调用:
int counter = 0;
public Form1()
{
InitializeComponent();
foreach (var c in Controls)
{
if (c is Button)
{
((Button)c).Click += (sender, e) =>
{
if (counter >= 10) return;
Button b = (Button)sender;
b.BackColor = Color.Green;
counter += 1;
};
}
}
}
推荐阅读
- r - 处理带有多个 csv 列表的两行标题
- mysql - MacOS Mojave - brew install mysql@5.7 - 用户'root'@'localhost'的访问被拒绝
- python - 如何检查一个数组是否在 Python 的数组列表中?
- node.js - module.exports 导出默认值:如何以正确的方式重写?
- python - 优先考虑来自 csv 的重复项
- linux - 两个默认网关上的路由问题
- reporting-services - 从 Reporting Services 迁移到 SSDT
- kubernetes - Kubernetes 不创建证书
- .net - 不同的 RedirectURL Google OAuth
- react-native - 更改 FlatList 的唯一 onPressed 项的样式