找出我刚刚插入的行上的rowindex?

时间:2011-09-01 20:06:33

标签: vb.net datagridview

我有一个我正在更新的vb项目,它有一个datagridview,一个面板和底部的按钮。按钮控制CRUD操作。面板显示数字上/下和文本框以表示所选行。

我使用一些逻辑来跟踪当前所选行和当前行索引,以便在后台更新定时器。删除后,我将焦点重置在第一行。加载后,我将焦点放在第一行。在更新时,我保持当前行焦点。

插入好后,我想将焦点设置到刚刚插入的行。但我不知道如何确定这个新插入行的rowindex值。 datagridview使用的数据表是在两个id列上排序的,所以它不像新条目只会跳到底部。

关于如何实现这一点的任何想法?

3 个答案:

答案 0 :(得分:3)

如果您不想像Jay Riggs所建议的那样处理RowAdded事件,如果使用行对象添加它,而不是仅仅使用Rows.Add,那么您应该能够将其从行对象中拉出来它插入了。

Dim dgr As New DataGridViewRow()

DataGridView1.Rows.Add(dgr)
Me.DataGridView1.Rows.IndexOf(dgr)

这也适用于插入。

答案 1 :(得分:2)

查看DataGridView RowAdded事件;它的DataGridViewRowsAddedEventArgs参数包含RowIndex属性,可以为您提供所需的属性。

每次添加行时都会触发事件,因此您需要在要检查添加的行时连接事件,或者在添加行时不关心事件(例如当您的网格填充数据时)。

答案 2 :(得分:0)

如果手动向DataGridView添加行,则可以使用Add方法中的返回值。例子:

Dim newRowIndex As Integer = myDataGridView.Rows.Add()
myDataGridView.Rows(newRowIndex).Selected = True

无需致电IndexOf。如果DataGridView绑定到DataSource,那么Jay Riggs使用RowsAdded事件的解决方案就是可行的方法。