首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

怎么“滚”才能正确

2012-02-04 
如何“滚”才能正确各位 老大:我在设计一个这样的程序时遇到了这样的难题:在窗体中有多个标签控件并列排放,

如何“滚”才能正确
各位 老大:
我在设计一个这样的程序时遇到了这样的难题:在窗体中有多个标签控件并列排放,用来显示数值,我通过代码控制改变标签大小,窗体大小不等于所有标签的宽度,如果我改变了其中几个标签的宽度,这时标签的总宽度大于窗体的宽度了,我添加了水平滚动条,这时如何设置水平滚动条的滚动距离,每变化一次,增加或减少的Value值正好等于某个标签的宽度(各个标签这时不是等宽的),请各位老大赐教。说了这么多,不知能不能看明白。我试了很多次,都没有成功。谢谢大家了!急等

[解决办法]
按列滚动:滚动条的范围设为 1~(列数-1),变化为 1,这样滚动条的 Change 事件中,Value 为可见的第一个列号,根据该列的坐标进行滚动。
[解决办法]
需要以最长的一个标签的长度为准,减去窗体宽度,则得到了滚动条的最大滚动值.

然后各个标签的Left属性都取滚动条Value的负值即可----如果你是左对齐的话.
[解决办法]
HScroll1.LargeChange = Me.ScaleWidth

LargeChange只能赋一个值给LargeChange或SmallChange 不等宽的滚动是不合理的要求.

除非你预知上一个或下一个要滚动的Label宽度 而随时改变LargeChange的值, 但太不合理了.
[解决办法]
我试了一下,有很多细节需要楼主处理的.比如滚动条右移之后再左移.
根据滚动条的change事件来控制标签控件的left属性值.

[解决办法]
我的想法和老鸟差不多,也是按列坐标来滚动。

只是滚动条的“滚动范围”算法想得复杂点、变化值不同。



滚动条选择( SmallChange = 1 , LargeChange = 3~5 ),即点箭头滚动 1 列,点卷动区滚 3~5 列
滚动范围的算法是:总列数 - 窗体宽度能够容纳下的最右边的列数

把标签放入一个容器( PictureBox 或 Frame )中,滚动时改变容器的 .Left属性 就可以了。

热点排行