关于VScrollBar控制FlowLayoutPanel的滚动

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

概述

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


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

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

解决

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

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 ...
    Moment__格调阅读 4,876评论 0赞 11
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,625评论 0赞 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,882评论 1赞 32
  • day01­_起源和结构 结构:Xhtml xml 表现:CSS 行为:DOM ECMAScript 以上都属于W...
    Sakura_明妃阅读 1,392评论 0赞 1
  • 周二休息,本打算早上六点半起床,去走绿道的,醒来之后,感觉太累了,因为中秋逛了一天,所以就决定不去,继续回去睡觉。...
    樱桃Cheery阅读 487评论 0赞 0

友情链接更多精彩内容