首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据网格View...programmatically设置选择行索引不会将CurrentRow.Index设置为相同吗?

数据网格View...programmatically设置选择行索引不会将CurrentRow.Index设置为相同吗?
EN

Stack Overflow用户
提问于 2014-03-10 23:44:46
回答 2查看 33K关注 0票数 6

这段代码

代码语言:javascript
复制
CurrentSelectedRow = Me.dgvPreviouslyCut.CurrentRow.Index

存储用户在数据网格视图控件中单击的当前选定行。刷新数据网格视图的数据源后,此代码

代码语言:javascript
复制
Me.dgvPreviouslyCut.Rows(CurrentSelectedRow).Selected = True

以编程方式重新选择同一行。

但紧接着

代码语言:javascript
复制
 Me.dgvPreviouslyCut.CurrentRow.Index

始终设置为零,而不是您预期的变量CurrentSelectedRow。

为什么以编程方式设置select行索引不会导致属性CurrentRow.Index设置为相同的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-11 00:16:00

CurrentRow是包含当前活动单元格的行。将DataGridView绑定到外部数据源时,此属性将重置为其默认值,即第一列中的第一个单元格。

SelectedRow是当前选中/突出显示的行。它可以是一行或多行,具体取决于MultiSelect属性。要选择一行,必须将其Selected属性设置为true。

通过将行设置为选中状态,您只需将其突出显示,而不会使其处于活动状态。

要保留当前单元格,必须存储当前单元格的行和列索引。使用CurrentCellAddress属性来获取它们。刷新DataSource后,使用这些索引设置CurrentCell属性。

代码语言:javascript
复制
dataGridView1.CurrentCell = dataGridView1.Rows(rowindex).Cells(columnindex);
票数 15
EN

Stack Overflow用户

发布于 2014-03-11 00:25:53

当数据源发生更改时,DataGridView会创建一个新的CurrencyManager。如果此CM包含项目,则默认位置为0,因此将其推送到DGV并选择第一行。

要解决此问题,只需设置CM的位置:

代码语言:javascript
复制
Me.dgvPreviouslyCut.DataSource = my_new_datasource

Dim cm As CurrencyManager = CType(Me.BindingContext(my_new_datasource), CurrencyManager)

If ((Me.CurrentSelectedRow > -1) AndAlso (Me.CurrentSelectedRow < cm.Count)) Then
    cm.Position = Me.CurrentSelectedRow
End If
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22304743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档