C# 如何删除整个datagridview并在没有重复项的情况下读取它?

C# 如何删除整个datagridview并在没有重复项的情况下读取它?,c#,C#,这是我第一次与C#合作。我正在尝试创建一个Datagridview,我可以通过单击一个名为Terminate all的按钮删除表中的所有行,然后使用一个名为Reset的按钮将其添加回默认设置,但当我单击Reset时,它会在我的datagrid中添加重复的按钮行。私有void按钮2\u Click(对象发送方,事件参数e)包含重置按钮的代码,if(dataGridView1.Columns[e.ColumnIndex].Name==“Terminate”)包含终止所有按钮的代码。 有人能告诉我如何

这是我第一次与C#合作。我正在尝试创建一个Datagridview,我可以通过单击一个名为Terminate all的按钮删除表中的所有行,然后使用一个名为Reset的按钮将其添加回默认设置,但当我单击Reset时,它会在我的datagrid中添加重复的按钮行。私有void按钮2\u Click(对象发送方,事件参数e)包含重置按钮的代码,if(dataGridView1.Columns[e.ColumnIndex].Name==“Terminate”)包含终止所有按钮的代码。 有人能告诉我如何删除datagridview末尾的重复按钮吗

namespace Dispatcher_2._0
{
    public partial class Form1 : Form
    {
        DataTable Table = new DataTable();


        public Form1()
        {

            InitializeComponent();
        }


        private void Form1_Load(object sender, EventArgs e)
        {

            Table.Columns.Add("PID", typeof(int));
            Table.Columns.Add("Status", typeof(string));
            Table.Columns.Add("Priority", typeof(int));
            Table.Rows.Add(91, "Current Process", 0);
            Table.Rows.Add(92, "Ready", 23);
            Table.Rows.Add(95, "Ready", 22);
            Table.Rows.Add(93, "Ready", 28);
            Table.Rows.Add(94, "Ready", 44);
            dataGridView1.DataSource = Table;
            DataGridViewButtonColumn Btn = new DataGridViewButtonColumn();
            DataGridViewButtonColumn Btn1 = new DataGridViewButtonColumn();
            DataGridViewButtonColumn Btn2 = new DataGridViewButtonColumn();

            Btn.Name = "Time Slice";
            Btn.Text = "Time Slice";

            Btn1.Name = "Block";
            Btn1.Text = "Block";

            Btn2.Name = "Terminate";
            Btn2.Text = "Terminate";
            Btn.UseColumnTextForButtonValue = true;
            Btn1.UseColumnTextForButtonValue = true;
            Btn2.UseColumnTextForButtonValue = true;
            dataGridView1.Columns.Add(Btn);
            dataGridView1.Columns.Add(Btn1);  
            dataGridView1.Columns.Add(Btn2);

        }

        private void button3_Click(object sender, EventArgs e)
        {
            Table.Clear();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Table.Rows.Add(91, "Current Process", 0);
            Table.Rows.Add(92, "Ready", 23);
            Table.Rows.Add(95, "Ready", 22);
            Table.Rows.Add(93, "Ready", 28);
            Table.Rows.Add(94, "Ready", 44);
            dataGridView1.DataSource = Table;
            DataGridViewButtonColumn Btn = new DataGridViewButtonColumn();
            DataGridViewButtonColumn Btn1 = new DataGridViewButtonColumn();
            DataGridViewButtonColumn Btn2 = new DataGridViewButtonColumn();

            Btn.Text = "Time Slice";
            Btn1.Text = "Block";
            Btn2.Text = "Terminate";
            Btn.UseColumnTextForButtonValue = true;
            Btn1.UseColumnTextForButtonValue = true;
            Btn2.UseColumnTextForButtonValue = true;
            dataGridView1.Columns.Add(Btn);
            dataGridView1.Columns.Add(Btn1);
            dataGridView1.Columns.Add(Btn2);
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Time slice")
            {

            }
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Block")
            {       
                int selectedRow = dataGridView1.CurrentCell.RowIndex;
                dataGridView1.Rows[selectedRow].SetValues(new Random().Next(50, 100), "Blocked", "-1");
            }
            if (dataGridView1.Columns[e.ColumnIndex].Name == "Terminate")
            {
                dataGridView1.Rows.RemoveAt(0);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Table.Rows.Add(new Random().Next(50, 100), "Ready", textBox1.Text);
        }

    }
}

您只是在清除表,而不是从datagridview中删除列。我之前尝试过删除列,但它保留了按钮列的三个标题,然后当我单击将它们添加回表中时,将3个按钮行放在网格的开头,并将值移动到最后三列。所以它基本上是在网格的左侧和右侧进行切换。如果列的数量和顺序没有改变,那么就不应该再添加它们。只需刷新表的数据并将其重新绑定到GridViews,我将如何做到这一点?这就是为什么我要问,我已经尝试了很多不同的方法,但到目前为止都没有成功;?