使用 TextBox 控件

TextBox 控件被用来在运行时显示用户输入的信息,或者在设计或运行时为控件的 Text 属性赋值。

图 7.44   TextBox 控件

 TextBox 控件用于可编辑文本,虽然也可将其 Locked 属性设置为 True 使其成为只读的。还可用文本框实现多行显示、根据控件的尺寸自动换行以及添加基本格式的功能。

Text 属性

Text 属性包含输入到 TextBox 控件中的文本。缺省时,文本框中输入的字符最多为 2048 个。若将控件的 MultiLine 属性设置为 True,则可输入多达 32K 的文本。

格式化文本

当文本超过控件边界时可将 MultiLine 属性设置为 True,使控件自动换行,并可将 ScrollBars 属性设置成添加水平滚动条或垂直滚动条(或者两种都添加),由此即添加了滚动条。但是,如果添加滚动条,那么,由于出现滚动条而使水平编辑区域增大,自动文本换行功能就会失败。

当把 MultiLine 属性设置为 True 时,可将文本的对齐方式调整为左对齐、中央对齐或右对齐。缺省设置为左对齐。如果 MultiLine 属性为 False,则 Alignment 属性无效。

详细信息 关于 MultiLine、ScrollBar 和 Alignment 属性的示例,请参阅第三章“窗体、控件和菜单”中的“使用 TextBox”。

选择文本

可通过 SelStart、SelLength 和 SelText 属性控制文本框中的插入点和文本选定操作。

详细信息 关于 SelStart、SelText 和 SelLength 属性的示例,请参阅“窗体、控件和菜单”中的“使用 TextBox”。

创建密码文本框

密码框是一个文本框允许在用户输入密码的同时显示星号之类的占位符。Visual Basic 提供 PasswordChar 和 MaxLength 这两个文本框属性,大大简化了密码文本框的创建。

PasswordChar 指定显示在文本框中的字符。例如,若希望在密码框中显示星号,则可在“属性”窗口中将 PasswordChar 属性指定为 * 。如图 7.48 所示,无论用户输入什么字符,文本框中都显示星号。

图 7.45   密码示例

可用 MaxLength 设定输入文本框的字符数。输入的字符数超过 MaxLength 后,系统不接受多出的字符并发出嘟嘟声。

取消文本框中的击键值

可用 KeyPress 事件限制或转换输入的字符。KeyPress 事件使用一个参数 keyascii。此参数为整型数值,代表输入到文本框中字符的数值 (ASCII)。

下例对如何在输入字符时取消击键值进行演示。若输入的字符不在指定范围内,则该过程通过将 KeyAscii 设置为 0 取消这个字符。在本例中,文本框的名称为 txtEnterNums,该过程将不允许文本框接受任何非数字的字符。示例中把 KeyAscii 与多个字符的数值型 (Asc) 值直接比较。

Private Sub txtEnterNums_KeyPress (KeyAscii As Integer)
   If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
      KeyAscii = 0   '取消字符。
      Beep            '发出错误信号。
   End If
End Sub

详细信息 关于 KeyPress 事件的详细信息,请参阅“响应鼠标和键盘事件”中的“响应键盘事件”。

创建只读文本框

可用 Locked 属性防止用户编辑文本框内容。将 Locked 属性设置为 True 后,用户就可滚动文本框中的文本并将其突出显示,但不能作任何变更。将 Locked 属性设置为 True 后就可在文本框中使用“复制”命令,但不能使用“剪切”和“粘贴”命令。Locked 属性只影响运行时的用户交互。这时仍可变更 Text 属性,从而在运行时通过程序改变文本框的内容。

打印字符串中的引号

引号 (" ") 有时出现在文本的字符串中。

She said, "You deserve a treat!"

因为赋予变量或属性的字符串都用引号 (" ") 括起来,所以对于字符串中要显示的一对引号,必须再插入一对附加的引号。Visual Basic 将并列的两对引号解释为嵌入的引号。

例如,要显示下面的字符串就应使用下述代码:

Text1.Text = "She said, ""You deserve a treat!"" "

可用引号的 ASCII 字符 (34) 达到相同效果:

Text1.Text = "She said, " & Chr(34) + "You deserve a treat!" & Chr(34)