100个按钮的10x10网格:点击时隐藏按钮(C#)

时间:2011-03-05 13:07:57

标签: c# events

我有一个100个按钮的10x10网格,我想在点击时隐藏按钮。

有没有办法将此应用于所有按钮?即,当点击任何按钮时,该按钮被隐藏。我使用表格布局来安排C#中的100个按钮。

我也将它添加到表格布局中,所以请告诉我如何将这些按钮添加到该10x10表格中。如何命名按钮对象以及如何将所有执行操作的单个事件添加到自身(即隐藏单击时自己

2 个答案:

答案 0 :(得分:9)

创建100个按钮

foreach (int i in Enumerable.Range(0, 10))
{
    foreach (int j in Enumerable.Range(0, 10))
    {
        Button b = new Button();
        b.Size = new System.Drawing.Size(20, 20);
        b.Location = new Point(i * 20, j * 20);
        b.Click += new EventHandler(anyButton_Click); // <-- all wired to the same handler
        this.Controls.Add(b);
    }
}

并将它们全部连接到同一个事件处理程序

void anyButton_Click(object sender, EventArgs e)
{
    var button = (sender as Button);
    if (button != null)
    {
        button.Visible = false;
    }
}

在事件处理程序中,您将sender投射到Button,这是按下的特定按钮。

答案 1 :(得分:0)

由于您使用的是tablelayoutpanel,因此无需计算按钮的位置,控件正在为您执行此操作。您还可以将按钮停靠属性设置为填充,因此您无需设置按钮的大小。您所要做的就是设置tableLayoutPanle

的属性

所以..

Button b;
foreach (int i in Enumerable.Range(0, 100))
{

        b = new Button();
        //b.Size = new System.Drawing.Size(20, 20); 
        b.Dock = DockStyle.Fill
        b.Click += new EventHandler(anyButton_Click); // <-- all wired to the same handler
        tableLayoutPanel.Controls.Add(b);

}