Skip to content

CommandButton 类

CommandButton是Win32原生按钮控件,用于触发操作——每次用户按下时运行点击处理程序。控件通常在设计时放置在FormUserControl上。默认属性是Value,默认事件是Click

vb
Private Sub Form_Load()
    cmdOK.Caption = "&OK"
    cmdOK.Default = True        ' Enter triggers it
    cmdCancel.Caption = "Cancel"
    cmdCancel.Cancel = True     ' Esc triggers it
End Sub

Private Sub cmdOK_Click()
    Unload Me
End Sub

触发点击

CommandButton每次用户按下时引发Click——通过左键点击、在有焦点时按SpaceEnter、输入Caption中标记的Alt+访问键、当CancelTrue时按Esc、或当DefaultTrue时在窗体任意位置按Enter。代码可以通过赋值TrueValue来触发相同事件:

vb
cmdOK.Value = True              ' raises cmdOK_Click

Value在点击处理程序返回后立即重置为False,因此读取它几乎总是返回False

Cancel 和 Default

CancelDefault是窗体互斥的——窗体上最多只有一个按钮可以将其中一个设为True。在一个按钮上赋值TrueCancelDefault会自动清除之前持有该属性的按钮上的相同属性。设置Default = True还会给按钮加粗"默认按钮"边框。

标题和助记符

按钮面上的文本来自Caption。标题中的和号将下一个字符标记为键盘助记符:按**Alt+**该字符将焦点移到按钮并引发Click(前提是窗体上没有其他控件竞争同一访问键)。使用&&显示字面和号。

vb
cmdSave.Caption = "&Save && Close"   ' renders as: Save & Close

图形样式

StylevbButtonGraphical时,按钮为所有者绘制,显示赋给PictureDownPictureDisabledPicture的位图以及标题。PictureAlignmentPaddingPictureDpiScaling控制图片的定位方式。在运行时更改Style会重新创建底层窗口。

属性

Appearance

决定操作系统绘制控件边框的方式。AppearanceConstants的成员:vbAppearFlatvbAppear3d(默认)。

BackColor

背景色,作为OLE_COLOR。默认为系统3D表面颜色。仅在StylevbButtonGraphical时有效——标准Win32按钮始终使用主题颜色绘制。

Cancel

True时,此按钮可从窗体任意位置由Esc键触发。Boolean,默认False。窗体上只能有一个CommandButton持有此属性——在第二个按钮上赋值True会自动清除前一个按钮上的该属性。

Caption

按钮上显示的文本。和号将下一个字符标记为助记符;&&产生字面和号。字符串直接从底层窗口读取——赋值给Caption会立即反映。

语法:object.Caption [ = string ]

CausesValidation

决定先前聚焦控件的Validate事件是否在此控件获得焦点之前运行。Boolean,默认TrueCommandButton自身不引发Validate

ControlType

标识此控件为命令按钮的只读ControlTypeConstants值。始终为vbCommandButton

Default

True时,此按钮可从窗体任意位置由Enter键触发(除非另一个控件当前正在消费Enter)。按钮还显示粗体"默认按钮"边框。Boolean,默认False。窗体上只能有一个CommandButton持有此属性——在第二个按钮上赋值True会自动清除前一个按钮上的该属性。

DisabledPicture

当控件禁用且StylevbButtonGraphical时,替代Picture绘制的StdPicture

DownPicture

当控件处于按下状态且StylevbButtonGraphical时,替代Picture绘制的StdPicture

DragIcon

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

DragMode

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

Enabled

决定控件是否接受用户输入。禁用的按钮显示其标题但变暗,忽略键盘和鼠标交互(包括其助记符和任何Cancel/Default行为)。Boolean,默认True

Font

用于渲染CaptionStdFont。便捷属性FontNameFontSizeFontBoldFontItalicFontStrikethruFontUnderline读写此对象的对应成员。

ForeColor

标题的文本颜色,作为OLE_COLOR。默认为系统按钮文本颜色。仅在StylevbButtonGraphical时有效。

Height

控件的高度,默认以缇为单位(或以容器的ScaleMode单位)。Single

HelpContextID

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

hWnd

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

Index

当控件是控件数组的一部分时,此实例在数组中的Long零基索引。运行时只读。

Left

从容器左边缘到控件左边缘的水平距离。Single

MaskColor

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。

MouseIcon

MousePointervbCustom且指针在控件上方时用作鼠标光标的StdPicture

MousePointer

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

Name

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

OLEDropMode

控件如何响应OLE放置。OLEDropConstants的受限成员:vbOLEDropNonevbOLEDropManual。CommandButton不支持自动放置模式。

Opacity

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

Padding

在图片和标题之间插入的空像素数(当PictureAlignmentvbAlignLeftvbAlignRight时)或在标题和对应边缘之间(当vbAlignTopvbAlignBottom时)。Long,默认2。仅在StylevbButtonGraphical时有意义。

Parent

对包含此控件的Form(或UserControl)的引用。只读。

Picture

StylevbButtonGraphical时绘制在按钮上的StdPicture。赋值Nothing恢复空图片而非移除位图表面。

PictureAlignment

StylevbButtonGraphicalPicture相对于标题的定位方式。AlignConstants的成员:vbAlignNonevbAlignTop(默认)、vbAlignBottomvbAlignLeftvbAlignRight

PictureDpiScaling

True时,绘制前按当前DPI因子缩放PictureDownPictureDisabledPictureBoolean,默认False

RightToLeft

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。

Style

在标准Win32按钮外观和所有者绘制图形按钮之间选择。ButtonConstants的成员:vbButtonStandard(0,默认)或vbButtonGraphical(1)。在运行时更改Style会重新创建底层窗口。

TabIndex

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

TabStop

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

Tag

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

ToolTipText

用户悬停在控件上方时作为工具提示显示的多行String

Top

从容器顶部到控件顶部的垂直距离。Single

TransparencyKey

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

UseMaskColor

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。

Value

从代码引发Click的触发器。默认属性。

语法:object.Value [ = boolean ]

赋值True引发Click并在处理程序返回后立即将Value重置为False;赋值False不做任何事。因此读取Value在几乎所有情况下返回False

vb
cmdOK.Value = True              ' equivalent to a user click

Visible

控件是否显示。Boolean,默认True

VisualStyles

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

WhatsThisHelpID

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

Width

控件的宽度。Single

方法

Drag

开始、完成或取消手动拖放操作。通常在DragModevbManual时从MouseDown处理程序调用。

语法:object.Drag [ Action ]

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

Move

在单次调用中重新定位并可选地调整控件的尺寸。

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

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

OLEDrag

从控件发起OLE拖动操作,引发OLEStartDrag事件以便应用程序填充DataObject

语法:object.OLEDrag

Refresh

强制立即重绘控件。

语法:object.Refresh

SetFocus

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

语法:object.SetFocus

ShowWhatsThis

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

语法:object.ShowWhatsThis

ZOrder

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

语法:object.ZOrder [ Position ]

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

事件

Click

每次按钮被按下时引发——通过鼠标点击、有焦点时按SpaceEnterCaption中的Alt+访问键、CancelTrue时按EscDefaultTrue时按Enter、或赋值TrueValue默认事件。

语法:object_Click( )

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( )

KeyDown

当控件有焦点时用户按下任意键时引发。

语法: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( )

MouseDown

当用户在控件上方按下任意鼠标按钮时引发。

语法:object_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseMove

当光标在控件上方移动时引发。

语法:object_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single )

MouseUp

当用户在控件上方释放鼠标按钮时引发。

语法:object_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single )

OLECompleteDrag

当OLE拖动操作完成时在源控件上引发,指示目标接受了哪种效果(复制、移动、无)。

语法:object_OLECompleteDrag( Effect As Long )

OLEDragDrop

当用户在目标控件上放置数据时在目标控件上引发。

语法:object_OLEDragDrop( Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single )

OLEDragOver

当OLE拖动经过目标控件时在目标控件上引发。

语法:object_OLEDragOver( Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer )

OLEGiveFeedback

在拖动期间在源控件上引发,以便应用程序调整光标或其他视觉反馈。

语法:object_OLEGiveFeedback( Effect As Long, DefaultCursors As Boolean )

OLESetData

当目标请求已注册但尚未提供的格式的数据时在源控件上引发。

语法:object_OLESetData( Data As DataObject, DataFormat As Integer )

OLEStartDrag

在OLE拖动开始时在源控件上引发,以便应用程序填充DataObject并选择允许的效果。

语法:object_OLEStartDrag( Data As DataObject, AllowedEffects As Long )

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