我在c#中有一个二维按钮数组,我想为数组中的任何按钮创建一个click事件。 当你点击特定按钮时,它会返回数组中的位置。
生成按钮:
for ( i = 0; i < 4; i++)
{
for ( j = 0; j < 4; j++)
{
Num[i, j] = new Button();
}
}
答案 0 :(得分:0)
你没有给我们任何代码可以使用,但我给你一个简单的解决方案。你可以在生成按钮的同时添加click事件,并使用{{1用于存储索引的属性。像这样:
Tag
然后是for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
Num[i, j] = new Button();
Num[i, j].Text = "Btn" + i + j;
Num[i,j].Tag=i+ ","+ j;
Num[i, j].Location = new Point(i * 80, j * 40);
Num[i, j].Click += Button1_Click;
this.Controls.Add(Num[i, j]);
}
}
事件:
Button1_Click
P.S。我不认为您需要一个数组来存储按钮,只需将它们添加到表单中,如图所示
答案 1 :(得分:0)
荡。第一个答案是在我写作的时候发布的!这个解决方案没有太大的不同,除了:
我避免拆分标签只是为了输出再次连接它
private void Form1_Load(object sender, EventArgs e)
{
for (var i = 0; i < 4; i++)
{
for (var j = 0; j < 4; j++)
{
var button = new Button { Top = 50 * i, Left = 100 * j , Text = $@"Button {i * 4 + j + 1}", Tag = $@"{i},{j}"};
button.Click += ButtonOnClick;
Controls.Add(button);
}
}
}
private static void ButtonOnClick(object sender, EventArgs eventArgs)
{
var button = (Button) sender;
MessageBox.Show(button.Tag.ToString());
}