认知尚浅,如有错误,愿闻其详!
概述
最近在做自定义控件的时候,为了解决一个问题:使用一个外部ScrollBar去控制一个具有滚动效果的控件滚动。如下:
滑条控制带滑条的FlowLayoutPanel滚动.png
(也不晓得我咋来的骚操作)
后来源于对控件属性不太了解,走了很多弯路。想过用VScrollBar去控制控制控件滚动幅度,没能做出来,后来想着直接去控制控件的滑条,也就有了下面的方法。
解决
首先我们了解Scroll的两个属性,LargeChange
和SmallChange
,如下,微软文档的解释:
实现
//首先需要修改一下flowLayoutPanel的高度,这样才能回去并赋值以下参数,
flowLayoutPanel.Height = panel.Height;
//通过外部VScrollBar 的Maximum 、SmallChange、LargeChange
//与控件的Scroll控件的相应参数值一致
scrollControl.Maximum = flowLayoutPanel.VerticalScroll.Maximum;
scrollControl.SmallChange = flowLayoutPanel.VerticalScroll.SmallChange;
scrollControl.LargeChange = flowLayoutPanel.VerticalScroll.LargeChange;
这样就实现了,不过其中也会有BUG,就是通过将外部VScrollBar的Value赋值给控件的Scroll的Value时,会出现第一次VScrollBar的Value = 10,赋值给控件的Scroll时却没赋上,下一次再赋值才会赋值上,但是界面却滚动了,很迷。
网友评论