关于.net:C#DataGridView捕获已删除的行

C# DataGridView capturing deleted row

1.

我正在使用绑定到数据集的DataGridView。
还有一个bindingNavigator。

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

1
2
3
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)        
{
        int crow = gridEventType.CurrentCell.RowIndex;

,但是在删除所选行之后,它将返回新选择的行。
所以,如果我有两行
0
1个
2个
我删除2

乌鸦为1,而不是2。

我在这里想念什么吗?

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

谢谢,


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


您应该使用DataGridViewCellEventArgs

1
2
3
4
5
6
7
8
9
10
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);
}

第二点是一个CellValueChangedEvent。

1
2
3
4
5
6
    private void bindingNavigatorModifiedCell_CellValueChanged(object sender,
                                                   DataGridViewCellEventArgs e)
    {
         //updated row
         int cRow = e.RowIndex;
    }


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

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

对于我的问题1。

  • 将BindingNavigator的" DeleteItem "属性更改为(无)
  • 创建一个" DeleteItem_Clicked "事件处理程序
  • 通过

    获取当前行号

    int cRow = gridEventType.CurrentCell.RowIndex;

  • 从bindingsource

    删除当前项目

    BindingNavigator.BindingSource.RemoveCurrent();