数据网格视图 在后面添加行窗体 不递增 当前行索引



我在datagridview(vb.net)上发现了一个错误,如果我从代码中添加一行,DataGridView1.CurrentRow.Index的值总是0。如果我手动(用鼠标)添加行,DataGridView1.CurrentRow.Index的值是正确的。

我有一个从代码中添加一些行的函数,我实现了DataGridView1_CellValueChanged,我检查所选行中的第一个单元格是否为空,但这个检查总是第一行。我在这个链接中发现了这个错误,https://developercommunity.visualstudio.com/t/datagridview-event-rowsadded-doesnt-show-the-corre/2270微软不想修复它。

我可以使用一个简单的布尔变量来修复这个错误,但也许有人可以帮助我明确地解决这个错误?

感谢

这不是一个bug。微软甚至在你链接的报告中说了同样多的话;按设计";意味着不是bug。

CurrentRow是包含CurrentCell的行,也是包含插入符号的单元格。当用户在UI中添加一行时,假设他们想要编辑该行,因此网格将插入符号移动到该行的第一个单元格。当你在代码中添加一行时,没有特定的期望用户会想要编辑该行,因为添加该行的不是用户,所以插入符号保持不变。

如果您希望新添加的行为CurrentRow,则需要将该行中的单元格分配给网格的CurrentCell属性,例如

Dim newRowIndex = myDataGridView.Rows.Add()
Dim newRow = myDataGridView.Rows(newRowIndex)
Dim firstNewCell = newRow.Cells(0)
myDataGridView.CurrentCell = firstNewCell

您可能会将这样的代码放入一个方法中,然后在任何时候添加行时调用该方法。

最新更新