C# 获取已删除DataGridView行的单元格值

C# 获取已删除DataGridView行的单元格值,c#,winforms,datagridview,C#,Winforms,Datagridview,My datagridview itemDelete函数: this.dgv_items.RowsRemoved += this.dgv_items_itemDelete; private void dgv_items_itemDelete(object sender, DataGridViewRowsRemovedEventArgs e) { try { int row = e.RowIndex; string name = dgv_items

My datagridview itemDelete函数:

this.dgv_items.RowsRemoved += this.dgv_items_itemDelete;

private void dgv_items_itemDelete(object sender, DataGridViewRowsRemovedEventArgs e)
{
    try
    {
        int row = e.RowIndex;
        string name = dgv_items.Rows[row].Cells[0].Value.ToString();
        deleteFromDB(name);
    }
    catch (Exception) { }
}
但是当我们到达此代码时,该行将被删除,这意味着
dgv_items.Rows[row].Cells[0]。Value
将获取行中下一行的值


我想获取已删除行的
单元格[0]
值,以便也可以从数据库文件中删除该项。如何实现这一点?

使用RowEnter事件选择行时,可以将单元格的值临时保存在变量中:

private void dgv_items_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                // tempValue is a class var
                tempValue = dgv_items.Rows[e.RowIndex].Cells[0].Value.ToString();
            }
            catch (Exception ex) { 
                MessageBox.Show(ex.Message);
            }
        }

然后在删除之前检索tempValue。

您可以处理该事件。请注意,它支持事件取消。

顺便说一句,您应该删除try/catch块。如果有问题,你永远不会知道是什么。@JohnSaunders对标题感到抱歉,真的很累。我知道try/catch块可能有问题,但是这个程序是供个人快速使用的,所以我不太在乎atm。但我同意这是一个坏习惯。你参加过这个活动吗?(还支持事件取消)@LuisQuijada Genius。。成功了!虽然我不能这样回答。谢谢你;创造性,我喜欢。这可能会奏效,但正如路易斯所建议的那样,UserDeletingRow事件是唯一合乎逻辑的解决方案。不过还是要感谢:DFYI,简单地显示或记录
ex.Message
是不好的做法。请改用
ex.ToString()
,因为它会显示完整的异常、堆栈跟踪和任何内部异常。