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

eYe*_*eYe 4 c# scroll datagridview panel winforms

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

dgvPanel.AutoScrollPosition = value;
Run Code Online (Sandbox Code Playgroud)

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

Lar*_*ech 5

将您正在使用的面板替换为此面板,这将覆盖默认面板用于确保控件可见的ScrollToControl功能:

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

  • 是的,默认情况下,当子控件被聚焦时,面板确保其顶部可见.聪明的解决方案. (2认同)