C#删除动态创建的按钮

时间:2018-07-04 07:21:41

标签: c#

我在这里面临一个问题。我想通过按X按钮删除动态创建的按钮。 该功能是用户按X按钮,然后按要删除的按钮,该按钮将被删除。

目前,我的程序可以创建一个新按钮,但我不知道如何删除它,这是我的编码,请帮助我,谢谢!!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace WindowsFormsApp2
{
public partial class graphtest : Form
{
    public graphtest()
    {
        InitializeComponent();
    }

    private Point Origin_Cursor;
    private Point Origin_Control;
    private bool BtnDragging = false;
    private void button1_Click(object sender, EventArgs e)
    {
        var b = new Button();
        b.Width = 54;
        b.Height = 58;
        b.Image = Image.FromFile(@"C:\Users\prod01\Desktop\Mote.png");
        b.Text = "";
        b.Name = "button";
        //b.Click += new EventHandler(b_Click);
        b.MouseUp += (s, e2) => { this.BtnDragging = false; };
        b.MouseDown += new MouseEventHandler(this.b_MouseDown);
        b.MouseMove += new MouseEventHandler(this.b_MouseMove);
        this.Controls.Add(b);



    }

    private void b_MouseDown(object sender, MouseEventArgs e)
    {
        Button ct = sender as Button;
        ct.Capture = true;
        this.Origin_Cursor = System.Windows.Forms.Cursor.Position;
        this.Origin_Control = ct.Location;
        this.BtnDragging = true;
    }

    private void b_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.BtnDragging)
        {
            Button ct = sender as Button;
            ct.Left = this.Origin_Control.X - (this.Origin_Cursor.X - Cursor.Position.X);
            ct.Top = this.Origin_Control.Y - (this.Origin_Cursor.Y - Cursor.Position.Y);

        } 
    }

    private void graphtest_Load(object sender, EventArgs e)
    {

    }

    private void button2_Click(object sender, EventArgs e)
    {
        for (int ix = this.Controls.Count - 1; ix >= 0; ix--)
        {
            if (this.Controls[ix] is Button) this.Controls[ix].Dispose();
        }
    }
}

}

enter image description here

1 个答案:

答案 0 :(得分:0)

这是您可以做到的

//a list where you save all the buttons created
List<Button> buttonsAdded = new List<Button>();

private void button2_Click(object sender, EventArgs e)
{
    Button myText = new Button();
    myText.Tag = counter;
    myText.Location = new Point(x2,y2);
    myText.Text = Convert.ToString(textBox3.Text);
    this.Controls.Add(myText);
    //add reference of the button to the list
    buttonsAdded.Insert(0, myText);

}

//atach this to a button removing the other buttons
private void removingButton_Click(object sender, EventArgs e)
{
    if (buttonsAdded.Count > 0)
    {
        Button buttonToRemove = buttonsAdded[0];
        buttonsAdded.Remove(buttonToRemove);
        this.Controls.Remove(buttonToRemove);
    }
}

Ref:-how to delete a button run time?