单击事件获取二维Button数组

时间:2016-12-22 14:46:51

标签: c# windows events click

我在c#中有一个二维按钮数组,我想为数组中的任何按钮创建一个click事件。 当你点击特定按钮时,它会返回数组中的位置。

生成按钮:

for ( i = 0; i < 4; i++)
{
   for ( j = 0; j < 4; j++) 
   { 
         Num[i, j] = new Button(); 
   }
}

2 个答案:

答案 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)

荡。第一个答案是在我写作的时候发布的!这个解决方案没有太大的不同,除了:

  1. 按钮文字是唯一的。
  2. 我避免拆分标签只是为了输出再次连接它

    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());
    }