Skip to content

VScrollBar 类 ​

VScrollBar是作为独立控件公开的Win32原生垂直滚动条。与自动出现在ListBox、ComboBox或TextBox内部的滚动条不同,VScrollBar独立于任何其他控件——其Value由代码读写。典型用途是通过将VScrollBar的Change和Scroll事件绑定到值所代表的含义来控制数值设置(滚动偏移量、亮度或不透明度级别、颜色通道、自定义绘制表面的垂直位置)。

HScrollBar是水平对应物;两个类除了方向外完全相同。

默认属性是Value,默认事件是Change。

vb
Private Sub Form_Load()
    vsbLevel.Min = 0
    vsbLevel.Max = 100
    vsbLevel.SmallChange = 1
    vsbLevel.LargeChange = 10
    vsbLevel.Value = 50
End Sub

Private Sub vsbLevel_Change()
    lblLevel.Caption = "Level: " & vsbLevel.Value & "%"
End Sub

Private Sub vsbLevel_Scroll()
    lblLevel.Caption = "Level: " & vsbLevel.Value & "%"   ' live update during drag
End Sub

范围和值 ​

Min和Max定义滚动条可以表示的整数闭区间,Value是该范围内的位置。默认值分别为0、32767和0。赋值超出当前[Min, Max]区间的Value会引发运行时错误380(无效属性值);赋值当前值是无操作(不引发Change)。

两个端点可以以任意顺序提供。当Min大于Max时,滚动条反向运行——将滑块向下移动会减小Value,Max是合法范围的下界。这便于实现例如"顶部为高值"的音量或亮度滑块:

vb
vsbVolume.Min = 100    ' topmost == loudest
vsbVolume.Max = 0      ' bottommost == silent
vsbVolume.Value = 75

在运行时更改Min或Max会静默地将当前Value钳制到新范围内——不会为隐式钳制引发Change事件。

增量大小 ​

滚动条通过四种用户输入产生值变化:

输入每步增量引发的事件
点击末端箭头SmallChangeChange
点击滑块上方或下方的轨道LargeChangeChange
拖动滑块连续拖动时Scroll,释放时Change
按Home / End跳到Min / MaxChange

SmallChange和LargeChange默认均为1。LargeChange还控制滑块相对于轨道的可见高度,因此更大的值会产生更高的滑块。

Change 与 Scroll 的区别 ​

两个事件的分工让应用程序可以选择对用户输入的响应频率。Scroll在用户拖动滑块时反复触发,因此处理程序可以在滑块移动时更新实时预览。Change在值稳定后触发一次——用户释放滑块后、点击箭头或轨道后,或代码赋值不同的Value时。许多应用程序将两个事件连接到同一处理程序,以便绑定显示在拖动期间和之后都更新。

属性 ​

Anchors ​

决定滚动条的哪些边随父级对应边调整的边集合。只读——通过返回的Anchors对象设置各个.Left、.Top、.Right、.Bottom标志。

CausesValidation ​

决定先前聚焦控件的Validate事件是否在此控件获得焦点之前运行。Boolean,默认True。

Container ​

承载此滚动条的控件——通常是窗体、Frame或UserControl。用Get读取,用Set更改。

ControlType ​

标识此控件为垂直滚动条的只读ControlTypeConstants值。始终为vbVScrollBar。

Dock ​

滚动条在其容器中的停靠位置。DockModeConstants的成员:vbDockNone(默认)、vbDockLeft、vbDockTop、vbDockRight、vbDockBottom或vbDockFill。停靠的滚动条忽略Anchors。

DragIcon ​

在控件被拖放时用作鼠标光标的StdPicture(参见Drag和DragMode)。

DragMode ​

控件是否应在用户按住鼠标时自行拖动。DragModeConstants的成员:vbManual(0,默认——从代码调用Drag)或vbAutomatic(1)。

Enabled ​

决定滚动条是否接受用户输入。禁用的滚动条变灰,不响应鼠标或键盘交互。Boolean,默认True。

Height ​

滚动条的高度,以缇为单位(或以容器的ScaleMode单位)。Double。对于垂直滚动条这是长边——即轨道的长度。

HelpContextID ​

标识应用程序帮助文件中主题的Long,当用户在控件有焦点时按F1时检索。

hWnd ​

底层滚动条的Win32窗口句柄,作为LongPtr。只读。适用于传递给API函数。

Index ​

当滚动条是控件数组的一部分时,此实例在数组中的Long零基索引。在非数组实例上读取Index会引发运行时错误343(对象不是数组)。运行时只读。

LargeChange ​

当用户点击滑块上方或下方的轨道(或在滚动条有焦点时按Page Up / Page Down)时Value的调整量。Long,默认1。还影响滑块的可见高度:更大的值在轨道上产生更高的滑块。

Left ​

从容器左边缘到滚动条左边缘的水平距离。Double。

Max ​

滚动条值范围的上端。Long,默认32767。可以设置得低于Min以反转移动方向——参见范围和值。

语法:object.Max [ = value ]

更改Max会在当前Value超出新范围时静默钳制。

Min ​

滚动条值范围的下端。Long,默认0。可以设置得高于Max以反转移动方向。

语法:object.Min [ = value ]

更改Min会在当前Value超出新范围时静默钳制。

MouseIcon ​

当MousePointer为vbCustom且指针在控件上方时用作鼠标光标的StdPicture。

MousePointer ​

指针在控件上方时显示的鼠标光标。MousePointerConstants的成员。

Name ​

控件在其父窗体上的唯一设计时名称。运行时只读。

Opacity ​

控件的不透明度百分比(0--100,默认100)。超出范围的值在Initialize时被钳制。子控件需要Windows 8或更高版本。

Parent ​

对最终包含此滚动条的Form(或UserControl)的引用。只读。

RightToLeft ​

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。要以反向运行滚动条,交换Min和Max。

SmallChange ​

当用户点击末端箭头(或在滚动条有焦点时按箭头键)时Value的调整量。Long,默认1。

TabIndex ​

控件在窗体TAB键导航顺序中的位置。Long。

TabStop ​

用户是否可以通过按TAB键到达控件。Boolean,默认True。禁用的控件无论此设置如何都会被跳过。

Tag ​

应用程序可用于将自定义数据与控件关联的自由格式String。框架忽略此属性。

Top ​

从容器顶部到滚动条顶部的垂直距离。Double。

TransparencyKey ​

设置后成为渲染控件中完全透明的OLE_COLOR。默认-1禁用效果。子控件需要Windows 8或更高版本。

Value ​

滚动条在[Min, Max]内的当前位置。Long,默认0。默认属性。

语法:object.Value [ = value ]

value
闭区间[Min, Max](或反向滚动条的[Max, Min])中的Long。超出该区间的值引发运行时错误380(无效属性值)。

赋值与当前值不同的值会移动滑块并引发单个Change事件。赋值当前值为静默无操作。

Visible ​

滚动条是否显示。Boolean,默认True。

VisualStyles ​

绘制滚动条时是否使用操作系统主题引擎。Boolean,默认True。

WhatsThisHelpID ​

标识应用程序帮助文件中"这是什么?"帮助弹出主题的Long。参见ShowWhatsThis。

Width ​

滚动条的宽度,以缇为单位(或以容器的ScaleMode单位)。Double。对于垂直滚动条这是短边——通常为操作系统标准滚动条厚度;大于该值的只会扩大周围的点击区域。

方法 ​

Drag ​

开始、完成或取消手动拖放操作。通常在DragMode为vbManual时从代码调用。

语法:object.Drag [ Action ]

Action
可选 DragConstants的成员:vbCancel(0)、vbBeginDrag(1,默认)或vbEndDrag(2)。

Move ​

在单次调用中重新定位并可选地调整滚动条的尺寸。

语法:object.Move Left [, Top [, Width [, Height ] ] ]

Left
必需 给出新水平位置的Single。
Top、Width、Height
可选 对应属性的新值。省略的值保持不变。

Refresh ​

强制立即重绘滚动条。

语法:object.Refresh

SetFocus ​

将输入焦点移到滚动条。控件必须同时Visible和Enabled,否则引发运行时错误5(无效的过程调用或参数)。

语法:object.SetFocus

ShowWhatsThis ​

以"这是什么?"弹窗形式显示由WhatsThisHelpID标识的主题。

语法:object.ShowWhatsThis

SyncScrollBar ​

将当前Min、Max、LargeChange和Value重新应用到底层Win32滚动条。属性赋值已隐式执行此操作——仅当外部代码(通常是Win32 API调用)绕过控件更改了其原生状态时才调用SyncScrollBar。

语法:object.SyncScrollBar

ZOrder ​

将控件带到同级堆栈的前面或后面。

语法:object.ZOrder [ Position ]

Position
可选 ZOrderConstants的成员:vbBringToFront(0,默认)或vbSendToBack(1)。

事件 ​

Change ​

在Value稳定到新值后引发——用户在拖动后释放滑块时、点击箭头或轨道时、在滚动条有焦点时按Home、End或箭头键时,或代码赋值不同的Value时。不会在拖动期间的连续更新时引发——参见Scroll。默认事件。

语法:object_Change( )

DragDrop ​

当手动拖动操作在目标控件上结束时在目标控件上引发。

语法:object_DragDrop( Source As Control, X As Single, Y As Single )

DragOver ​

当手动拖动操作进行中时在光标下方的控件上引发。

语法:object_DragOver( Source As Control, X As Single, Y As Single, State As Integer )

GotFocus ​

当滚动条获得输入焦点时引发。

语法:object_GotFocus( )

Initialize ​

在底层窗口已创建且滚动条已连接到其Win32范围后,但滚动条首次绘制之前引发一次。适用于需要底层句柄的最后一刻设置。

语法:object_Initialize( )

KeyDown ​

当控件有焦点时用户按下任意键时引发。注意滚动条已在内部处理箭头键、Page Up / Page Down和Home / End——但KeyDown仍然会为它们触发,除产生Change外。

语法:object_KeyDown( KeyCode As Integer, Shift As Integer )

KeyPress ​

当用户输入产生ANSI按键的字符时引发。

语法:object_KeyPress( KeyAscii As Integer )

KeyUp ​

当控件有焦点时用户释放键时引发。

语法:object_KeyUp( KeyCode As Integer, Shift As Integer )

LostFocus ​

当滚动条失去输入焦点时引发。

语法:object_LostFocus( )

Scroll ​

在用户拖动滑块期间连续引发,每产生一个不同的Value一次。用户释放滑块后,会引发单个Change事件携带最终值。Scroll是滑块移动时实时预览的正确事件;Change仅触发最终值。

语法:object_Scroll( )

Validate ​

当焦点移动到CausesValidation为True的另一个控件时引发。将Cancel设为True使焦点保留在此控件上。

语法:object_Validate( Cancel As Boolean )

twinBASIC及其LOGO版权为作者"韦恩"所有