vb程序使用水平和垂直滚动条来控制2个picturebox的滚动,picturebox1是外框,picturebox2在它上面移动,然后用滚动条控件来控制picturebox2的移动。
现在的问题是:picturebox1的大小是固定的,picturebox2的大小是由程序动态设置的,在拖动的时候(picturebox2长宽太大时)程序有时候会报溢出的错误。
我在程序里是这么控制的。
程序开始时:
    ' 设置滚动条
    If pic2.Width > pic1.Width Then
        vsbWidth.Visible = True
        vsbWidth.SmallChange = (pic2.Width - pic1.Width) / 10
    Else
        vsbWidth.Visible = False
    End If
    
    If pic2.Height > pic1.Height Then
        vsbHeight.Visible = True
        vsbHeight.SmallChange = (pic2.Height - pic1.Height) / 10
    Else
        vsbHeight.Visible = False
    End If
控制部分
Private Sub vsbHeight_Change()    If vsbHeight <= vsbHeight.Max / 10 Then
        picStock.Top = 0 - vsbHeight.Value
        
    End If
End Sub大家都是怎么控制滚动条的,给些建议,谢谢。

解决方案 »

  1.   

    怎么没设置vsbWidth和vsbHeight的Max值啊?
      

  2.   

    你的两个picturebox的左边都是在一起的吗?left属性,还有top
      

  3.   

    1 max值应该怎样得到,我这里picturbox2的长度和宽度都不是固定的。
    2 两个picturebox的左边不是在一起的picture2可以在picture1上向左移动。
    3 移动的结果应该怎样检查。我做过类似检查控制,结果在picture2长度很大时,用滚动条就显示不全了。
    我这里有几个值得概念不太清晰,max的值的单位,而且滚动条本身也有values值。
    还有我的滑块大小和滚动的距离也不相配。大家有什么好的例子我可以参考一下(动态增加的,不是固定大小移动那种。)
      

  4.   

    溢出是因为Value>32767,你把smallchange的值用一个稍大一点的整数约一下,减小change时的最大值,
      

  5.   

    那么smallchange的值怎样来设定呢?
    如果我参考picturebox2和picturebox1的长宽来设定的话,在picture2值很大的时候,就会溢出。
    但是如果像你说的用整数约一下的话,因为change值不准确,容易在拖动滚动条时候,picture2显示不全。