Skip to content

TextBox 类

TextBox 是一个 Win32 原生编辑控件,允许用户输入和编辑文本。它可配置为单行字段(默认)或带可选滚动条的多行编辑器,可以掩码内容用于密码输入,限制仅接受数字输入,以及在为空时显示占位符"提示横幅"。

该控件通常在设计时放置在FormUserControl上。默认属性为Text,默认设计器事件为Change

vb
Private Sub Form_Load()
    Text1.MultiLine  = True
    Text1.ScrollBars = vbVertical
    Text1.TextHint   = "Type your message here..."
End Sub

Private Sub Text1_Change()
    lblCount.Caption = Len(Text1.Text) & " characters"
End Sub

单行和多行模式

MultiLine在单行编辑(默认)和多行编辑器之间选择:

  • 单行。 控件接受单行文本。按下Enter不会插入换行符——它由窗体的默认按钮(如果有)处理。ScrollBars和大多数自动换行设置被忽略。
  • 多行。 控件接受并显示多行文本,根据客户端宽度自动换行。Enter在控件内插入换行符。ScrollBars决定显示水平、垂直、两者还是不显示滚动条。

在运行时更改MultiLineScrollBarsHideSelection会重新创建底层窗口——内容、当前的MaxLengthPasswordCharLocked状态在重建过程中保持不变。

密码掩码

PasswordChar设置为非空字符串时,该字符串的第一个字符将显示在用户键入的每个字符的位置。读取Text仍返回真实字符。将PasswordChar设置回空字符串可恢复正常显示。

密码掩码是单行编辑功能——在MultiLineTrue时设置PasswordChar对显示文本没有可见效果。

vb
txtPassword.PasswordChar = "•"      ' 为每个字符显示一个圆点

提示横幅

TextHint设置一个占位符字符串,当Text为空时以暗淡颜色显示——用于提示预期内容而不占据实际文本。默认情况下,控件获得焦点后提示即隐藏;将TextHintAlways设置为True可使提示在空控件获得焦点时仍然可见(直到用户开始输入)。

选区

SelStartSelLengthSelText读取和修改用户的文本选区。在没有活动选区时读取其中任何一个会返回插入符位置和空的SelText。设置SelStartSelLength会将插入符滚动到可见区域;设置SelText会将当前选区替换为指定字符串,并将插入符定位到插入文本之后。

默认情况下,控件失去焦点时选区高亮即隐藏。将HideSelection设置为False可在另一个控件获得焦点时仍保持高亮可见——当应用程序需要在搜索或验证后引起用户注意某个文本范围时很有用。

仅限数字

NumbersOnlyTrue时,编辑控件会静默拒绝任何非十进制数字的按键。符号字符、小数分隔符和千位分隔符不被接受——该属性是操作系统ES_NUMBER样式的简单封装,仅提供数字过滤。请使用KeyPress处理程序进行更复杂的验证。

OLE 拖放

OLEDragMode控制源端拖动。当设置为vbOLEDragAutomatic时,在编辑区域拖动选中文本会启动 OLE 拖动操作,其有效载荷为选中的文本;如果目标以vbDropEffectMove接受放置,则选中的范围会从文本框中移除。

OLEDropMode控制放置目标行为:vbOLEDropNone忽略放置,vbOLEDropManual触发OLEDragOverOLEDragDrop以便应用程序决定如何处理,vbOLEDropAutomatic让框架在插入符位置插入放置的文本而不触发这些事件。

数据绑定

设置DataSourceDataField可将控件的Text连接到Data控件记录集的字段。绑定值在每次行更改时作为字符串读取(Null字段变为空字符串),当前Text在行保存时写回。修改Text——无论是通过用户输入还是代码赋值——都会设置DataChanged并将记录集行标记为已修改。

属性

Alignment

控件内文本的水平对齐方式。

语法:object.Alignment [ = value ]

value
AlignmentConstants的成员:vbLeftJustify(0,默认)、vbRightJustify(1)或vbCenter(2)。当平台编辑控件在单行模式下不原生支持居中和右对齐时,需要MultiLineTrue;tB 在两种模式下均支持。

Anchors

父容器边缘的集合,文本框的对应边缘在父容器调整大小时跟随。只读——通过返回的Anchors对象分配各自的.Left.Top.Right.Bottom标志。

Appearance

决定操作系统如何绘制控件边框。AppearanceConstants的成员:vbAppearFlatvbAppear3d(默认)。仅在BorderStylevbFixedSingleBorder时有意义——在凹陷的 3D 边缘和薄平边框之间选择。

BackColor

编辑区的背景色,为OLE_COLOR。默认为系统窗口背景色。

BorderStyle

文本框是否绘制边框。ControlBorderStyleConstants的成员:vbNoBorder(0)或vbFixedSingleBorder(1,默认)。边框的具体外观取决于Appearance

CausesValidation

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

Container

承载此文本框的控件——通常是窗体、FramePictureBox。使用Get读取,使用Set更改。在运行时设置Container会重新设定文本框的父容器。

ControlType

标识此控件为文本框的只读ControlTypeConstants值。始终为vbTextBox

DataChanged

运行时只读的Boolean,当Text自上次保存后被修改时变为True,在更改写回记录集后清除。

DataField

绑定DataSource记录集中由Text镜像的字段名称。String

DataFormat

INFO

保留用于 VB6 兼容性;twinBASIC 中当前未实现。

一个StdDataFormat,用于在原始记录集值和显示文本之间进行转换。

DataMember

INFO

保留用于 VB6 兼容性;twinBASIC 中当前未实现。

DataSource公开多个记录集时,要绑定的成员名称。

DataSource

Data控件(或其他DataSource提供程序)的引用,其记录集为DataField提供值。使用Set设置。

Dock

文本框在其容器内的停靠位置。DockModeConstants的成员:vbDockNone(默认)、vbDockLeftvbDockTopvbDockRightvbDockBottomvbDockFill。停靠的文本框忽略Anchors

DragIcon

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

DragMode

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

Enabled

决定控件是否接受用户输入。禁用的文本框显示当前文本但呈暗淡状态,忽略键盘和鼠标交互。Boolean,默认True

Font

用于渲染文本的StdFont。便利属性FontNameFontSizeFontBoldFontItalicFontStrikethruFontUnderline读取或写入此对象的相应成员。

FontBold

Font.Bold的快捷方式。Boolean

FontItalic

Font.Italic的快捷方式。Boolean

FontName

Font.Name的快捷方式。String

FontSize

Font.Size的快捷方式——磅值。Single

FontStrikethru

Font.Strikethrough的快捷方式。Boolean

FontUnderline

Font.Underline的快捷方式。Boolean

ForeColor

文本颜色,为OLE_COLOR。默认为系统窗口文本颜色。

Height

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

HelpContextID

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

HideSelection

True(默认)时,控件失去焦点时选区高亮即隐藏;当False时,焦点移到其他位置后高亮仍保持可见。Boolean。在运行时更改会重新创建底层窗口。

hWnd

底层编辑控件的 Win32 窗口句柄,为LongPtr。只读。适用于传递给 API 函数。

Index

当控件是控件数组的一部分时,此实例在数组中的Long零基索引。在非数组实例上读取Index会引发运行时错误 343(Object not an array)。运行时只读。

Left

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

LinkItem

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkMode

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkModeConstants的成员。

LinkTimeout

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkTopic

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

Locked

True时,用户可以滚动、选择和复制文本但不能修改。Boolean,默认False。与Enabled不同——锁定的文本框仍正常绘制并继续触发焦点和鼠标事件,而禁用的文本框呈暗淡状态并完全忽略输入。

MaxLength

用户可在控件中键入的最大字符数。Long,默认0——为零时,操作系统施加其自身限制(单行通常为 32 767 个字符,多行大得多)。将MaxLength设置为低于当前文本长度不会截断已有内容,但会阻止进一步键入,直到用户删除足够的字符。

MouseIcon

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

MousePointer

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

MultiLine

True时,控件接受多行文本,显示自动换行,并将Enter路由为插入换行符。当False(默认)时,控件容纳单行。Boolean。在运行时更改会重新创建底层窗口。

Name

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

NumbersOnly

True时,编辑控件拒绝除十进制数字0--9之外的按键。Boolean,默认False。不验证代码赋值的值、符号字符、小数点或千位分隔符——请使用KeyPress处理程序进行额外验证。

OLEDragMode

控件的选中文本是否可作为自动 OLE 拖动源。OLEDragConstants的成员:vbOLEDragManual(0,默认——从代码调用OLEDrag)或vbOLEDragAutomatic(1)。

OLEDropMode

控件如何响应 OLE 放置。OLEDropConstants的成员:vbOLEDropNonevbOLEDropManualvbOLEDropAutomatic(在插入符位置插入放置的文本而不触发OLEDragDrop)。

Opacity

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

Parent

对最终包含此控件的Form(或UserControl)的引用。只读。与Container不同,后者返回直接父容器。

PasswordChar

一个String,其第一个字符显示在每个键入字符的位置以掩码屏幕内容。String,默认为空(无掩码)。读取Text仍返回真实字符。仅在单行模式下有效。

RightToLeft

INFO

保留用于 VB6 兼容性;twinBASIC 中当前未实现。

ScrollBars

多行文本框显示哪些滚动条。ScrollBarConstants的成员:vbSBNone(0,默认)、vbHorizontal(1)、vbVertical(2)或vbBoth(3)。当MultiLineFalse时忽略。在运行时更改会重新创建底层窗口。

当自动换行的多行文本框启用垂直滚动条时,水平滚动条会禁用自动换行——行将延伸超出右边缘而不换行。

SelLength

当前选中的字符数。Long。设置它会从SelStart扩展或收缩选区,并将插入符滚动到可见区域。

SelStart

选区起始的零基位置,或无文本选中时的插入符位置。Long。设置它会清除现有选区,将插入符移动到新位置,并将插入符滚动到可见区域。

SelText

当前选中的文本。赋值字符串会替换选区并将插入符定位到插入文本之后。String

TabFocusAutoSelect

True(默认)时,用户通过TAB键将焦点移入文本框时自动选中全部内容。Boolean。父窗体的TabFocusAutoSelect属性也必须为True此设置才生效——当窗体级开关为False时,每控件的值被忽略。

TabIndex

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

TabStop

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

Tag

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

Text

控件中显示的文本。String默认属性。

语法:object.Text [ = string ]

赋值与当前值不同的值会触发Change事件并刷新显示。赋值相同的值为无操作。在多行模式下,换行符使用平台的原生换行编码存储(Windows 上为vbCrLf)。

TextHint

Text为空时以暗淡颜色显示的占位符String——Win32 提示横幅。默认为空(无提示)。用户开始输入后提示即消失。

TextHintAlways

True时,TextHint在空控件获得输入焦点时也显示;当False(默认)时,控件获得焦点后提示即消失。Boolean

ToolTipText

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

Top

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

TransparencyKey

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

Visible

控件是否可见。Boolean,默认True

VisualStyles

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

WhatsThisHelpID

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

WheelScrollEvent

True(默认)时,多行文本框上的鼠标滚轮通知触发Scroll事件;当False时,滚轮仍滚动内容但Scroll被抑制。Boolean。VB6 不会为滚轮事件触发Scroll;将此设置为False可完全匹配该行为。

Width

控件的宽度。Single

方法

Drag

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

语法:object.Drag [ Action ]

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

LinkExecute

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkPoke

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkRequest

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkSend

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

Move

在单次调用中重新定位并可选地调整控件大小。

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

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

OLEDrag

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

语法:object.OLEDrag

Refresh

强制控件立即重绘。

语法:object.Refresh

SetFocus

将输入焦点移至控件。控件必须同时为VisibleEnabled,否则引发运行时错误 5(Invalid procedure call or argument)。

语法:object.SetFocus

ShowWhatsThis

WhatsThisHelpID标识的主题显示为"这是什么?"弹出窗口。

语法:object.ShowWhatsThis

ZOrder

将控件置于同级堆栈的前面或后面。

语法:object.ZOrder [ Position ]

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

事件

Change

Text更改时触发——无论是通过用户输入还是代码赋值。在Initialize期间不触发;从序列化窗体加载的首次文本不会产生Change事件。默认设计器事件。

语法:object_Change( )

Click

当用户用任何鼠标按钮单击控件时触发。当鼠标按下被此控件捕获且点击不是来自双击时,从MouseUp处理程序发出。

语法:object_Click( )

DblClick

当用户双击控件时触发。抑制否则会从第二次MouseUp触发的合成Click

语法:object_DblClick( )

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

在底层窗口创建后触发一次,TextLockedMaxLengthTextHintPasswordChar已从序列化数据应用。Change不会为此初始文本加载而触发。

语法:object_Initialize( )

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 )

LinkClose

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkError

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkNotify

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LinkOpen

INFO

保留用于 VB6 DDE 兼容性;twinBASIC 中当前未实现。

LostFocus

当控件失去输入焦点时触发。

语法:object_LostFocus( )

MouseDown

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

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

MouseMove

当光标在控件上方移动时触发。当OLEDragModevbOLEDragAutomatic时,MouseMove还跟踪光标是否在选中文本上方,以便 IBeam 光标在自动拖动前切换为指针。

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

MouseWheel

当用户在控件获得焦点或光标在其上方时旋转鼠标滚轮时触发。twinBASIC 新增——无对等的 VB6 事件。

语法:object_MouseWheel( Delta As Integer, Horizontal As Boolean )

Delta
WHEEL_DELTA(120)为单位的正或负滚动增量。
Horizontal
True表示水平滚轮旋转,False表示标准垂直滚轮。

OLECompleteDrag

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

语法:object_OLECompleteDrag( Effect As Long )

OLEDragDrop

当用户将数据放置在目标控件上时触发(当OLEDropModevbOLEDropManual时)。

语法: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并选择允许的效果。当OLEDragModevbOLEDragAutomatic且用户从非空选区开始拖动时也会自动触发。

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

Scroll

当多行文本框被滚动时触发——通过滚动条(包括拖动滑块)、键盘或鼠标滚轮。滚轮驱动的滚动可通过将WheelScrollEvent设置为False来抑制。twinBASIC 新增——无对等的 VB6 事件。

语法:object_Scroll( )

Validate

当焦点移动到CausesValidationTrue的另一个控件时触发。将Cancel设置为True可将焦点保持在此控件上。

语法:object_Validate( Cancel As Boolean )

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