我有一个我正在更新的vb项目,它有一个datagridview,一个面板和底部的按钮。按钮控制CRUD操作。面板显示数字上/下和文本框以表示所选行。
我使用一些逻辑来跟踪当前所选行和当前行索引,以便在后台更新定时器。删除后,我将焦点重置在第一行。加载后,我将焦点放在第一行。在更新时,我保持当前行焦点。
插入好后,我想将焦点设置到刚刚插入的行。但我不知道如何确定这个新插入行的rowindex值。 datagridview使用的数据表是在两个id列上排序的,所以它不像新条目只会跳到底部。
关于如何实现这一点的任何想法?
答案 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事件的解决方案就是可行的方法。