删除动态生成的按钮

时间:2013-09-10 21:38:07

标签: c# winforms visual-studio

我正在使用C#窗体表格并需要一些帮助。我有一个按钮,可以创建其他按钮,并将它们添加到列表'按钮'。我需要让每个按钮在点击时自行销毁。

        //create new button
        Button newButton = new Button();
        newButton.Name = "aButt"+buttNum;
        Debug.WriteLine(newButton.Name);
        buttNum++;

        newButton.Text = "Button!";
        newButton.Height = 50;
        newButton.Width = 50;

        //controls where the new button gets placed
        if (curX > 9)
        {
            curX = 0;
            curY++;
            //defines the point the button spawns
            newButton.Location = new System.Drawing.Point((curX * 55)+10, curY * 55);
            //increments X to avoid placing a button on top of another
            curX++;

        }
        else
        {
            newButton.Location = new System.Drawing.Point((curX * 55) + 10, curY * 55);
            curX++;
        }


        newButton.UseVisualStyleBackColor = true;
        newButton.Click += new System.EventHandler(this.removeThisButton);
        buttons.Add(newButton);
        this.Controls.Add(newButton);

我设置了事件监听器,但由于发送者没有关于按钮本身的实际信息,我不知道如何摆脱它。

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

click事件处理程序具有签名

private void myButton_Click(object sender, EventArgs e)

object sender是事件的来源。只需将其转换为Button,就可以点击:

    Button whatWasClicked = sender as Button;
    if(whatWasClicked == null)
        // never mind -- it wasn't a button...

答案 1 :(得分:0)

发件人按钮。您可以将它从Form的控件集中删除,如下所示:

private void removeThisButton(object sender, EventArgs e) {
    this.Controls.Remove(sender);
}