在DataGridView UserDeletedRow事件处理程序中需要帮助

时间:2017-06-26 07:20:50

标签: c# .net datagridview

对不起,如果这看起来有点不专业,但我不知道这里发生了什么,这让我发疯了。

所以我有一个DataGridView,其数据如下所示: -

one

我想要做的是每当用户删除一行(或条目)时,我希望它下面的所有行都相应地更新其SrNo和Balance字段,我在UserDeletedRow事件处理函数中编写了以下代码: -

(请注意,禁用删除第一行)

private void dataGridView1_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
    {
        if(dataGridView1.CurrentRow.Index != dataGridView1.Rows.Count - 1)
        {
            for (int i = dataGridView1.CurrentRow.Index; i < dataGridView1.Rows.Count - 1; i++)
            {
                dataGridView1.Rows[i].Cells[0].Value = Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value) - 1;
                int a = dataGridView1.Rows[i].Cells[2].Value == DBNull.Value ? 0 : Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
                int b = dataGridView1.Rows[i].Cells[3].Value == DBNull.Value ? 0 : Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value);
                dataGridView1.Rows[i].Cells[4].Value = (a + Convert.ToInt32(dataGridView1.Rows[i - 1].Cells[4].Value)) - b;
            }
        }
    }

现在我遇到的问题是当用户删除最后一行时,if条件专门用于检查是否无法正常工作。或者我应该说

dataGridView1.CurrentRow.Index

没有返回正确的值(所以我认为),因为当我在If条件上放置一个断点时,我看到了这个

two

这是在关注列表中

three

我们可以看到所选择的行(或当前行)是索引编号5,但它在显示4的监视列表中,这是我问题的根源。

感谢任何帮助,谢谢。

0 个答案:

没有答案