在网上看到解决方法,但都不是自己想要的方法。然后就是都是重写继承panel的方法来进行。单着我认为不是一个好方法。
关于C#的Panel控件重绘后滚动条跳动的问题
可以参照一下。
而我认为不是好方法的原因是:
当使用继承的类的时候,所使用的design界面会打不开,从而导致一系列非常麻烦的问题。我不知道是不是要重新设置界面。
然后就是我立刻放弃了这个方法。
虽然这个方法是可以工作的。
但是我不死心,我试图寻找可以不需要重新继承类的方法。然后就是去到继续搜索。
最后还是搜索不出什么来。
不过我在机缘巧合下,发现了另一个方法,就算使用Panel.ScrollControlIntoView()
这个方法我尝试了一下,是将panel滚动到显示指定控件的地方。当我在出现弹窗后关闭弹窗的时候,就调用这句话,就能够解决自动滚动的问题了。
另外,我使用其他的代码,就是另一个项目,都不会出现这种情况。不知道是为啥。
对于底层的逻辑还是没有真正搞清楚。
希望能够帮到大家。
我是在this.panel2.ScrollControlIntoView(panel_listbox);
调用完成后就相当于是围魏救赵,曲线救国的方式,虽然还会有些滚动,但是不至于滚动到最上方。