【问题标题】:c# Scroll bars keep resetting when DataGridView updatesc# DataGridView更新时滚动条不断重置
【发布时间】:2012-03-24 04:42:16
【问题描述】:

我正在这样绑定我的网格:

dataGridView1.DataSource = new BindingSource();

dataGridView1.DataSource = tableData;(tableData 是自定义对象的 ArrayList)

dataSource 经常更新(它正在读取的文件大约每 2 毫秒更新一次)。所以当我滚动时,滚动条会在刷新时跳到原来的位置。我这样刷新:

((CurrencyManager)dataGridView1.BindingContext[tableData]).Refresh();(大约每 1 秒发生一次)

如何在每次刷新 datagridview 时滚动而不重置滚动条?

【问题讨论】:

    标签: c# .net datagridview scrollbar


    【解决方案1】:

    看看this。虽然问题是关于 Winforms DataGrid,但答案适用于 DataGridView。您需要在重新加载之前存储FirstDisplayedScrollingRowIndex,并在之后恢复它。

    【讨论】:

    • 这似乎有效。鉴于这是一个非常大的数据集,滚动不是很流畅。我可以拖动条一定量,然后它会停止跟随我的光标,所以我必须再次抓住它并重复。这仅仅是因为它非常大,还是因为当它刷新/处理行索引时,它会停止拖动动作?
    • 滚动速度也取决于硬件。你可以试试this。我没有用过这个,所以我不确定它是否真的有效。
    【解决方案2】:

    我知道你发布这个问题已经有一段时间了,但我自己也遇到了这种问题。要检查的一件事是确保您在网格更新时没有设置 CurrentCell 属性

    如下代码将导致您的滚动位置重置。您是在告诉它查看特定行以及该行中的第一个单元格。

    YourGrid.CurrentCell = YourGrid[0, row];
    

    希望这会有所帮助。

    直流

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2011-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多