1

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

        //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);

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

任何帮助表示赞赏!

4

2 回答 2

2

单击事件处理程序具有签名

private void myButton_Click(object sender, EventArgs e)

object sender是事件的来源。只需将其转换为 a Button,就会点击以下内容:

    Button whatWasClicked = sender as Button;
    if(whatWasClicked == null)
        // never mind -- it wasn't a button...
于 2013-09-10T21:43:39.847 回答
0

发件人按钮。您可以像这样从 Form 的控件集合中删除它:

private void removeThisButton(object sender, EventArgs e) {
    this.Controls.Remove(sender);
}
于 2013-09-10T21:46:37.870 回答