Panel Scroll Resetting中的DataGridView

时间:2013-06-06 08:37:02

标签: c# winforms datagridview scrollbar panel

我的问题与:

完全相同

Problem with DataGridView and scroll position

每当我编辑DataGridView中的单元格时,父面板会重置其滚动条。当DataGridView中的选择发生变化时,也会发生这种情况。但是,我需要保留面板,因为我有两个DataGridViews,并希望能够滚动它们。

通过收听面板的Scroll事件,跟踪滚动条的值,并在SelectionChange和{{1}中重新应用这些值,我设法解决了一些问题CellEndEdit上的事件,但这不是一个非常好的解决方案,它会使屏幕抖动,因为滚动更改为0,然后返回到我设置它的值。任何人都可以向我指出一个更好的方向,或者知道一种阻止Panel重置其滚动条的方法吗?

1 个答案:

答案 0 :(得分:4)

我找到了一个可行的解决方法:

http://nickstips.wordpress.com/2010/03/03/c-panel-resets-scroll-position-after-focus-is-lost-and-regained/

通过覆盖ScrollToControl并返回this.DisplayRectangle.Location,修复了我遇到的滚动问题。

protected override Point ScrollToControl(Control activeControl)
{
    return this.DisplayRectangle.Location;
}