在网上找了很多方法,(1)记录滚动条位置,然后在重绘时将保存下来的位置重新复制;
(2)重写ScrollToControl;
其中第一种方法治标不治本,会出现画面闪动,第二种方法最为有效。
下面主要记录重写ScrollToControl过程:
参考博客:https://blog.csdn.net/yysyangyangyangshan/article/details/7335980
主要思路是继承Panel,然后重写ScrollToControl。
(1)在使用该panel控件的窗体下的类里面加入如下代码:
public partial class MyPanel : Panel
{
protected override Point ScrollToControl(Control activeControl)
{
return this.AutoScrollPosition;
}
}
(2)修改InitializeComponent()函数(我的程序名字叫Tool,它的Form1内使用了panel控件):
// this.panel1 = new System.Windows.Forms.Panel();
this.panel1 = new Tool.Form1.MyPanel();
通过上面两步即可解决滚动条的问题。