删除DataGridView中的第一行实际上删除了所有行

时间:2010-12-09 13:22:29

标签: c# winforms

我在C#,Windows Forms中创建应用程序。

我有一个DataGridView,其中我有一个包含Button s(DataGridView Button列的列。我创建了一个On Button click事件,因此它调用了一个删除行的方法:

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) 
{
    try
    {
        if (e.ColumnIndex == 5)
        {
            if (!dataGridView.Rows[e.RowIndex].IsNewRow)
            {
                dataGridView.Rows.Remove(dataGridView.CurrentRow); // removes current row
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error: " + ex.Message);
    }
}

我首先添加行,然后在需要时将其删除,如果删除最后一行则没有问题。 如果我尝试删除除最后一行之外的第一行或任何其他行,则会出现此问题。如果 - 例如 - 我删除第一行,则删除所有行。当我调试它时,似乎该方法重复了很多次,因为我的DataGrid中有行。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您是否有其他代码可以选择/设置DataGridView中的当前所选行。

可能有一些其他代码,实际上是将空格键发送到当前选定的行,因此当删除行时,CellClick事件也会在下一行被触发。只是猜测BTW。

另外,请尝试使用CellContentClickCellMouseClick事件。

答案 1 :(得分:0)

更改:dataGridView.Rows.Remove(dataGridView.CurrentRow); 致:dataGridView.Rows.RemoveAt(e.RowIndex);