面板滚动后,面板内的 DataGridView 跳转到列表的开头

DataGridView inside a panel jumps to beginning of list after panel gets scrolled

我在面板中有一个 DataGridView。滚动在 DataGridView 上被禁用,而是在面板上完成。通过这样做,我实现了 DataGridView 的基于像素的滚动。我滚动如下:

dgvPanel.AutoScrollPosition = value;

但是,问题是在更改滚动条位置后,如果我单击 DataGridView - 它会跳回到列表的开头。什么会导致这个?

用这个面板替换您正在使用的面板,它会覆盖默认面板用来确保控件可见的 ScrollToControl 函数:

public class PanelEx : Panel {
  protected override Point ScrollToControl(Control activeControl) {
    //return base.ScrollToControl(activeControl);
    return this.AutoScrollPosition;
  }
}