2011-09-01 53 views
2

我有一个vb项目,我正在更新,它有一个datagridview,一个面板和底部的按钮。按钮控制CRUD操作。该面板显示数字上/下和文本框来表示选定的行。找出我刚刚插入的行上的rowindex?

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

一个好的插入我想设置焦点到我刚刚插入的行。但我不知道一种方法来确定这个新插入行的rowindex值是什么。 datagridview使用的数据表按两个id列排序,因此它不像新条目会跳到底部。

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

回答

2

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

每次添加行时都会触发事件,所以当您想要检查添加的行时,必须将事件连接起来,或者在不关心何时添加行时忽略该事件(例如就像你的网格填充数据一样)。

+0

谢谢Jay,这很好。 – TWood

3

如果你不想像Jay Riggs所说的那样处理RowAdded事件,如果你使用一个行对象来添加它,而不是像Rows.Add那样,你应该可以把它从行对象插入后。

Dim dgr As New DataGridViewRow() 

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

这也应该适用于插入。

+0

你的例子也很有帮助。我保留它,因为我知道有一些地方它会被使用。谢谢Yatrix。 – TWood

+0

乐意帮忙,伙计。 – Yatrix

0

如果您手动将行添加到DataGridView,那么您可以使用Add方法的返回值。示例:

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

无需调用IndexOf。如果DataGridView绑定到DataSource,那么Jay Riggs使用RowsAdded事件的解决方案就是要走的路。