2

我在 VB 6 中的 Windows 应用程序有一个包含大量控件的表单。如果客户端环境的屏幕尺寸较小,则大多数控件都不会出现。我想做的是为用户提供一个垂直和水平滚动条,以便用户可以滚动所有控件。任何人都知道如何实现这一点?

PS请不要提供仅显示标签以显示滚动值的示例:)

4

2 回答 2

4

我喜欢大卫的回答,但如果你想用滚动条做到这一点,首先,你需要将所有控件放入适合它们的框架中。您想要移动 1 个控件,而不是“大量控件的地狱”。其次,将滚动条放入表单中,并在Form_Resize事件中添加一些代码来调整滚动条的大小。调整滚动条的大小后,您需要做一些数学运算来设置MaxSmallChangeLargeChange属性。我展示Min属性只是为了让您知道它永远不会改变,只需在设计器中设置它即可。此示例仅使用水平滚动条,因为我也懒得包含垂直滚动条。最后,将代码添加到滚动条 Change 事件以移动框架。

Private Sub Form_Resize()

    HScroll1.Move 0, Me.ScaleHeight - HScroll1.Height, Me.ScaleWidth
    HScroll1.Min = 0
    HScroll1.Max = Frame1.Width - Me.ScaleWidth
    HScroll1.SmallChange = HScroll1.Max / 100
    HScroll1.LargeChange = HScroll1.Max / 10

End Sub

Private Sub HScroll1_Change()

    Frame1.Left = -HScroll1.Value
    DoEvents ' this is not strictly necessary, but smooths the scolling some

End Sub

您还需要错误处理代码。我是一个懒惰的示例编码器。

于 2012-12-11T17:49:08.680 回答
4

一种方法是使用 Windows API 调用打开表单的滚动条。这与使用 ScrollBar 控件不同;例如,打开表单自己的滚动条可以防止滚动条干扰标签顺序。

这是一个很好的页面,解释了如何做到这一点,以及一个帮助类:

http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Adding_Scroll_Bars_To_Forms__P​​ictureBoxes_and_UserControls/article.asp

于 2012-12-11T17:12:03.913 回答