【问题标题】:Scrollbar position after refreshing Datagridview vb.net刷新Datagridview vb.net后的滚动条位置
【发布时间】:2021-08-14 10:20:38
【问题描述】:

我正在开发一个从不同计算机收集数据的系统。

我的要求是,当我刷新 datagridview 以查看数据库中的输入数据时,应选择所选行并且滚动条位置应位于同一位置,因为当刷新发生时,滚动条将移动到网格的顶部。任何帮助将不胜感激!

我正在使用此代码刷新 DataGridView

Private Sub Form_Load(sender As object, e As EventArgs) Handles MyBase.Load

RefreshData()
End Sub

Private Sub AutoRefresher_tick(sender As object, e As EventArgs) Handles AutoRefresher.Tick
DatagridView()
End Sub

Sub RefreshData()
Dim timer as new Timer
timer.Interval = 5000
addHandler timer.tick, Addressof AutoRefresher_Tick
timer.start()
End Sub

【问题讨论】:

    标签: vb.net datagridview refresh


    【解决方案1】:

    “选择”在这里是一个不好的术语,因为“选择”意味着DataGridView 中的特定内容,而这不是您所需要的。 SelectedRows 属性是选中的行的集合,即突出显示的行。这里重要的是插入符号所在的位置,即“当前”行,而不是“选定”行。 CurrentRow 属性是单行,它是包含 CurrentCell 的行,即包含插入符号的单元格。

    您需要做的是在刷新之前获取CurrentRow,为该记录存储一个唯一标识符,进行刷新,找到包含该标识符的新行并将其设为当前行。理想情况下,您应该通过BindingSource 绑定数据,然后您可以使用该属性的CurrentPosition 属性,例如

    Dim currentRecord = DirectCast(BindingSource1.Current, DataRowView)
    Dim currentId = currentRecord("Id")
    
    'Refresh data here.
    
    Dim position = BindingSource1.Find("Id", currentId)
    
    BindingSource1.Position = position
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2013-01-28
      • 1970-01-01
      相关资源
      最近更新 更多