美文网首页
关于VScrollBar控制FlowLayoutPanel的滚动

关于VScrollBar控制FlowLayoutPanel的滚动

作者: Memoyu | 来源:发表于2019-10-16 21:59 被阅读0次

认知尚浅,如有错误,愿闻其详!

概述

  最近在做自定义控件的时候,为了解决一个问题:使用一个外部ScrollBar去控制一个具有滚动效果的控件滚动。如下:


滑条控制带滑条的FlowLayoutPanel滚动.png

(也不晓得我咋来的骚操作)
后来源于对控件属性不太了解,走了很多弯路。想过用VScrollBar去控制控制控件滚动幅度,没能做出来,后来想着直接去控制控件的滑条,也就有了下面的方法。

解决

首先我们了解Scroll的两个属性,LargeChangeSmallChange,如下,微软文档的解释:

LargeChange And SmallChange.png

实现

      //首先需要修改一下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时却没赋上,下一次再赋值才会赋值上,但是界面却滚动了,很迷。

效果

实现控制.gif

相关文章

网友评论

      本文标题:关于VScrollBar控制FlowLayoutPanel的滚动

      本文链接:https://www.haomeiwen.com/subject/zgnkmctx.html