对不起,如果这看起来有点不专业,但我不知道这里发生了什么,这让我发疯了。
所以我有一个DataGridView,其数据如下所示: -
我想要做的是每当用户删除一行(或条目)时,我希望它下面的所有行都相应地更新其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条件上放置一个断点时,我看到了这个
这是在关注列表中
我们可以看到所选择的行(或当前行)是索引编号5,但它在显示4的监视列表中,这是我问题的根源。
感谢任何帮助,谢谢。