【发布时间】:2010-06-02 22:15:12
【问题描述】:
我有一个使用 DataGridView 作为数据表示的 Windows 应用程序。每 2 分钟,网格将用新数据刷新。为了使滚动条与添加的新数据保持同步,我必须重置它的滚动条:
dbv.Rows.Clear(); // clear rows
SCrollBars sc = dbv.ScrollBars;
dbv.ScrollBars = ScrollBars.None;
// continue to populate rows such as dbv.Rows.Add(obj);
dbv.ScrollBars = sc; // restore the scroll bar setting back
使用上面的代码,滚动条在数据刷新后重新出现。问题是应用程序需要在刷新后将某些单元格设置为选中:
dbv.CurrentCell = dbv[0, selectedRowIndex];
使用上面的代码,单元格被选中;但是,滚动条的位置并不反映所选单元格的行位置的位置。当我在刷新后尝试移动滚动条时,网格会跳转到第一行。
重置后滚动条位置似乎设置回0。设置网格的 CurrentCell 的代码不会导致滚动条重新定位到正确的位置。据我所知,DataGriadView 中没有获取或设置滚动条值的属性或方法。
我也尝试将选中的行置顶:
dbv.CurrentCell = dbv[0, selectedRowIndex];
dbv.FirstDisplayedScrollingRowIndex = selectedRowIndex;
该行将设置为顶部,但滚动条的位置仍然不同步。不确定是否有任何方法可以使滚动条的位置与代码中设置的选定行同步?
【问题讨论】:
标签: visual-studio-2005 datagridview