C#DataGridView捕获已删除行

C#DataGridView捕获已删除行,c#,.net,vb.net,ado.net,datagridview,C#,.net,Vb.net,Ado.net,Datagridview,1. 我使用的是DataGridView,它绑定到数据集。 还有一个bindingNavigator 当用户通过单击“bindingNavigatorDeleteItem”按钮删除一行时,我正在尝试删除该行 private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) { int crow = gridEventType.CurrentCell.RowIndex; 但它会在删除

1.

我使用的是DataGridView,它绑定到数据集。 还有一个bindingNavigator

当用户通过单击“bindingNavigatorDeleteItem”按钮删除一行时,我正在尝试删除该行

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)        
{
        int crow = gridEventType.CurrentCell.RowIndex;
但它会在删除选定行后返回新选定的行。 所以,如果我有两排 0 1. 2. 我删除了2个

乌鸦是1,不是2

我是不是遗漏了什么

2。如何知道是否在datagridview中修改了某些行?


谢谢,

您应该使用
DataGridViewCellEventArgs

private void bindingNavigatorDeleteItem_Click(object sender, 
                                                  DataGridViewCellEventArgs e) 
{
   int cRow =  gridEventType.Rows[e.RowIndex];

   //delete row from persisted storage

   //rebind data to persisted storage or remove row directly:
   gridEventType.Rows.RemoveAt(cRow);
}
关于你的第二点,有一个问题

关于我的问题#1

  • 将BindingNavigator的“DeleteItem”属性更改为(无)
  • 创建“DeleteItem\u Clicked”的事件处理程序
  • 按获取当前行数

    int cRow=gridEventType.CurrentCell.RowIndex

  • 从bindingsource中删除当前项

    BindingNavigator.BindingSource.RemoveCurrent()


使用datagridview.UserDeletingRow事件获取已删除的行对象

尝试使用
UserDeletingRow
作为删除行的事件处理程序,在该方法中,您可以获得行索引,如下所示:

 private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
    {
        int tmpId = (int) e.Row.Index;
    }

我无法添加将DatagridViewCellEventArgs用于bindingNavigatorDeleteItem的事件处理程序。此外,bindingNavigator没有此类CellValueChanged事件。我认为,如果我将其用于DataGridView,比如:public void DataGridView_CellValueChanged(…),这可以起作用。实际上,您应该将其添加为注释。
 private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
    {
        int tmpId = (int) e.Row.Index;
    }