C# 如何删除整个datagridview并在没有重复项的情况下读取它?
这是我第一次与C#合作。我正在尝试创建一个Datagridview,我可以通过单击一个名为Terminate all的按钮删除表中的所有行,然后使用一个名为Reset的按钮将其添加回默认设置,但当我单击Reset时,它会在我的datagrid中添加重复的按钮行。私有void按钮2\u Click(对象发送方,事件参数e)包含重置按钮的代码,if(dataGridView1.Columns[e.ColumnIndex].Name==“Terminate”)包含终止所有按钮的代码。 有人能告诉我如何删除datagridview末尾的重复按钮吗C# 如何删除整个datagridview并在没有重复项的情况下读取它?,c#,C#,这是我第一次与C#合作。我正在尝试创建一个Datagridview,我可以通过单击一个名为Terminate all的按钮删除表中的所有行,然后使用一个名为Reset的按钮将其添加回默认设置,但当我单击Reset时,它会在我的datagrid中添加重复的按钮行。私有void按钮2\u Click(对象发送方,事件参数e)包含重置按钮的代码,if(dataGridView1.Columns[e.ColumnIndex].Name==“Terminate”)包含终止所有按钮的代码。 有人能告诉我如何
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,我将如何做到这一点?这就是为什么我要问,我已经尝试了很多不同的方法,但到目前为止都没有成功;?