03
2012
04

控件的使用--命令按钮、标签和文本框

8.1.1 命令按钮
大多数Windows应用程序都有命令按钮(CommandButton),用户能够通过简单的单击按钮来执行操作。当用户单击按钮时,不仅会执行相应操作,还会使该按钮看上去像被按下并释放一样。无论何时,只要用户单击按钮,就会调用 Click 事件过程。将代码写入 Click 事件过程,就可以执行想要的动作。
工具箱中命令按钮的图标为: 。在窗体上默认显示为Command1等。
下面介绍命令按钮的常用属性、事件和方法。对于命令按钮中介绍过的常用控件所共有的属性(如Caption、Name、Font、Enabled、Visible、ForeColor、BackColor、Left、Top、Width、Height等),在介绍其它控件时将不再重复。
1.命令按钮的常用属性
(1)Name属性:对象的名称
应用程序中的每个控件都必须有一个唯一的Name属性。Name属性只能在属性窗口中进行修改,不能在程序运行的时候改变。
在窗体上放置一个控件时,Visual Basic会给控件分配一个缺省的名字。但为了操作方便,提高程序的可读性,我们可以根据控件在程序中的实际作用,为其取一个合适的名称。控件名称的命名规则跟我们前面提到的变量的命名规则一致,为方便编写程序代码,我们建议对控件的命名尽量做到“见名知意”。
对于每个控件在起名时微软都有相应的名称前缀建议,命令按钮(CommandButton)的缺省名称为Command1、Command2……,微软建议的名称前缀为cmd。例如一个“开始”按钮的名称我们可以取为cmdStart。
VB中其它控件的Name属性跟命令按钮的Name属性用法一样,以后不再介绍。
(2)Caption属性:对象的标题
如果说控件的Name属性是作为控件内部标识符给程序员看的,而Caption属性则是作为控件的外部标识来指引用户的。
Caption属性的缺省值与控件的Name属性的缺省值相同,如新建名称为Command1的命令按钮,其Caption属性的初值也为Command1。我们在进行程序设计的时候一般都需要重新设置命令按钮的Caption属性,以说明该按钮的功能。
我们在应用其他Windows程序的时候,会发现有的按钮上面有加一个下划线的字母。如QQ的聊天窗口上的4个按钮, ,我们称这些带下划线的字母为访问键,只要按住Alt键再按相应的字母,就相当于单击了一下该按钮。如果想发送消息,除了用鼠标点“发送”按钮之外,还可以用Alt+S键来实现。那么我们如何在命令按钮上实现这样的效果呢?方法很简单,只需要在想要设定的字母前面加上这个符号“&”就可以了。可以在属性窗口设置,也可以在代码里面进行设置。

(3)Enabled属性:设置是否响应,为逻辑型
命令按钮的Enabled属性设定或返回一个值,决定命令按钮是否响应用户生成的事件,也就是命令按钮是否可用。如果这个属性设置为True,那么控件就可以在程序运行时由用户操作;如果该属性设置为False,则用户可以看到这个控件但是不能操作它。此时,控件颜色表现为灰色或变淡,指示用户它是不可访问的,也就是不能响应用户产生的任何事件。这个属性的默认值为True。
Enabled属性可以在设计时在属性窗口设置,也可以在程序运行的时候通过赋值语句为其赋值。
Visual Basic中其它控件的Enabled属性跟命令按钮的Enabled属性用法一样,以后不再介绍。
(4)Visible属性:设置是否可见,为逻辑型
当命令按钮的Visible属性设为False时,控件是不可见的。当控件被隐藏时,它不响应用户产生的任何事件,但是可以通过代码访问它。在默认情况下,命令按钮的Visible属性为True。
Visible属性可以在设计时在属性窗口设置,也可以在程序运行的时候通过赋值语句为其赋值。
Visible Basic中其它控件的Visible属性跟命令按钮的Visible属性用法一样,以后不再介绍。
例8.1 设置并查看命令按钮的Enabled属性和Visible属性。
1) 窗体上面有4个按钮,要求左边两个控制右边两个,运行后的效果如图8.1所示。左边两个命令按钮对象名分别为Command1和Command2,右边两个分别为Command3和Command4。各控件的属性设置通过代码来实现。

图8.1 命令按钮效果图
2)具体的代码如下:
Private Sub Form_Load()
Form1.Caption = "命令按钮"
Command1.Caption = "有效(&H)"
Command2.Caption = "无效(&W)"
Command3.Caption = "被控按钮1"
Command4.Caption = "被控按钮2"
End Sub
Private Sub Command1_Click()
If Command1.Caption = "隐藏(&H)" Then
Command3.Visible = False '隐藏
Command1.Caption = "显示(&S)"
Else
Command3.Visible = True
Command1.Caption = "隐藏(&H)"
End If
End Sub
Private Sub Command2_Click()
If Command2.Caption = "无效(&W)" Then
Command4.Enabled = False '命令按钮变成灰色(无效)
Command2.Caption = "有效(&Y)"
Else
Command4.Enabled = True
Command2.Caption = "无效(&W)"
End If
End Sub
(5)BackColor属性:背景颜色
BackColor属性返回或设置命令按钮的背景色。
(6)Style属性:样式属性,为整型
Style属性返回或设置命令按钮的外观,是标准的(0-Standard)还是图形的(1-Graphical),系统默认的是标准的(0-Standard)。
(7)Picture属性:图片属性
Picture属性返回或设置命令按钮上面显示的图形。
注意:BackColor属性和Picture属性必须在Style属性设置为(1-Graphical)的时候才有作用。如果标准的(0-Standard),命令按钮是标准的Windows按钮。
(8)Cancel属性和Default属性:逻辑型
Cancel属性返回或设置一个值,用来指示窗体中按钮是否为取消命令按钮。当Cancel属性设置为True时,该按钮就是取消按钮,用户只要在程序运行的时候按键盘上面的ESC键,就相当于单击了一下该按钮。默认情况下Cancel属性为False。
Default属性返回或设置一个值,用来指示窗体中的按钮是否为缺省命令按钮。当Default属性为True时,该按钮就是缺省命令按钮。如果窗体上其它控件不响应键盘事件,而且焦点不在其他命令按钮上,那么当用户按键盘上Enter键时,相当于单击了一下该按钮。
注意:一个窗体同时只能有一个命令按钮的Cancel属性或Default属性为True,当设定其他按钮的Cancel属性或Default属性为True时,其他原来为True的按钮将自动变为False。
(9)Font属性组:字体属性组
Font属性是一个对象,它包括Name、Bold、Italic、Size、Underline、Strikethrough等6个属性。Visual Basic中其它控件的该属性用法与此类似。
①Font.Name或FontName属性返回或设置在控件中显示文本所用字体的类型名称,该属性为String类型,默认为“宋体”。需要注意的是在代码中设置字体的时候,字体一定要在系统中存在。
②Font.Size或FontSize属性返回或设置在控件中显示文本的大小,该属性为Integer类型,默认为9号字。
③Font.Bold或FontBold属性返回或设置在控件中显示文本是否为粗体,该属性为Boolean类型,默认为False。
④Font.Italic或FontItalic属性返回或设置在控件中显示文本是否为斜体,该属性为Boolean类型,默认为False。
⑤Font.Underline或FontUnderline属性返回或设置在控件中显示文本是否加下划线,该属性为Boolean类型,默认为False。
⑥Font.Strikethrough或FontStrikethrough属性返回或设置在控件中显示文本是否加删除线,该属性为Boolean类型,默认为False。
(10)Left、Top属性:位置属性(如图8.2所示)

图8.2 控件的位置属性
 Left属性返回或设置控件左上角顶点的横坐标。
 Top属性返回或设置控件左上角顶点的纵坐标。
(11)Width属性和Height属性:大小属性
 Width属性返回或设置控件的宽度。
 Height属性返回或设置控件的高度。
注意:以上这4个位置属性和大小属性对所有控件都有效,但对于有些在运行时不可见的控件没有必要进行设置(如Timer控件)。
(12)Value属性:逻辑型
在程序代码中设置命令按钮的Value属性为True,相当于调用执行该命令按钮的Click控件。需要注意的是Value属性只能在代码窗口中设置,不能在属性窗口中设置。
(13)ToolTipText属性:字符类型
ToolTipText属性返回或设置鼠标在命令按钮上停留时的提示文本。一般我们用该属性来提示某个命令按钮的用处,对于图形按钮特别有效。例如,VisualBasic编辑窗口的“资源管理器”按钮,当鼠标放到上面时出现如图 提示。
2.命令按钮的常用事件
命令按钮的常用事件是Click事件,命令按钮的功能是通过编写命令按钮的Click事件程序代码来实现的。例如,CmdEnd按钮的Caption属性设置为“退出”,表示这是一个退出程序的按钮,为了实现该功能,我们需要在代码窗口写入如下代码。
Private Sub cmdEnd_Click()
End
End Sub
要特别注意的是命令按钮无DblClick事件
3.设置焦点
焦点是接收用户鼠标或键盘输入的能力。当对象具有焦点时,可接收用户的输入。在Microsoft Windows界面,任一时刻可运行几个应用程序,但只有具有焦点的应用程序才有活动标题栏,才能接受用户输入。例如,在有几个TextBox的Visual Basic窗体中,只有具有焦点的TextBox才显示由键盘输入的文本。
当对象得到或失去焦点时,会产生GotFocus或LostFocus事件。窗体和多数控件支持这些事件。
GotFocus对象得到焦点时发生,LostFocus对象失去焦点时发生。
如下方法可以将焦点赋给对象:① 运行时选择对象;② 运行时用快捷键选择对象;③ 在代码中用SetFocus方法(控件名.SetFocus)。
有些对象,它是否具有焦点是可以看出来的。例如,当命令按钮具有焦点时,标题周围的边框将突出显示(如图8.1所示)。只有当对象的Enabled和Visible属性为True时,它才能接收焦点。Enabled属性允许对象响应由用户产生的事件,如键盘和鼠标事件。Visible 属性决定了对象在屏幕上是否可见。
8.1.2 标签框控件
标签控件用来为其他没有标题的控件(如文本框、列表框、组合框等)进行说明,还可以用来显示一些程序运行过程中的提示信息。
工具箱中标签控件的图标为: 。
标签控件的默认名称为Label1、Label2……微软建议的名称前缀为lbl。(特别注意名称中的l是字母L的小写,不是数字1)。
1.标签框的常用属性
(1)Caption属性:标题属性
基本用法与命令按钮类似,不同的是标签控件不能获得焦点。标签控件可以通过字符前加一个“&”符号来设置访问键,按下Alt+访问键后,焦点就会移到焦点顺序在标签后面的下一个可以获得焦点的控件上面。
(2)AutoSize属性和WordWrap属性:扩展属性,为逻辑型
在缺省情况下,当输入的Caption的内容超过控件宽度时,文本不会自动换行,而且在超过控件高度时,超出部分被裁减掉。为使控件能够自动调整以适应内容多少,可将AutoSize属性设为True,这样控件可水平扩展以适应Caption内容。为使Caption内容自动换行并垂直扩展,应将WordWrap属性设为True,如图8.3所示。

图8.3 AutoSize属性和WordWrap属性设置图
(3)Alignment属性:对齐方式,为整数类型
Alignment属性返回或设置标签中文本的对齐方式,当Alignment属性为0时(默认值),文本在标签中居左显示;为1时,文本居右显示;为2时,居中显示。
(4)BackStyle属性:背景样式,为整数类型
BackStyle属性返回或设置控件的背景样式是否透明。当属性值为0时,标签背景透明;当为属性值为1(默认值)时,标签背景不透明,背景色即BackColor属性所设置的颜色。
(5)BorderStyle属性:边框样式,为整数类型
BorderStyle属性返回或设置控件的边框样式。属性值为0(默认值)时,无边框;为1时,有边框。
2.标签框的常用事件
标签框常用事件有Click、DblClick、Change等。但通常我们在程序设计中仅仅把标签作为一个显示文本的控件,很少对标签进行编程。
8.1.3 文本框
文本框(TextBox)通常用于在运行时输入和输出文本,是计算机和用户进行信息交互的控件。
工具箱中文本框控件的图标为: 。
文本框控件的默认名称为Text1、Text2……微软建议的名称前缀为txt。
1.文本框的常用属性
(1)Text属性:文本属性,为字符串类型
Text属性返回或设置文本框中的文本(类似于标签控件的Caption属性)。Text属性是文本框控件最重要的属性之一,可以在设计时在属性窗口赋值,也可以在运行时在文本框内输入或通过程序代码对Text属性重新赋值。
(2)MaxLength属性:设置字符长度,为整数类型
MaxLength属性可以指定能够在文本框控件中输入的字符的最大数量。MaxLength属性的取值范围为0~65535,默认值为0。若在其取值范围内设定了一个非0值,则尾部超出部分将被截断。例如将文本框Text1的MaxLength设置为5,那么在Text1中只能输入5个字符。又如执行下面代码,文本框将只显示“Hello”。
Text1.MaxLength=5
Text1.Text="HelloWorld"
(3)MultiLine属性:设置多行显示,为逻辑型
MultiLine属性返回或设置文本框是否接受多行文本。
当MultiLine属性为False(默认值)时,文本框中的字符只能在一行显示。
当MultiLine属性为True时,则可以在程序运行时在文本框中输入多行文本。另外也可以在设计的时候在Text属性里面直接按Ctrl+Enter来换行。在代码中通过给Text属性赋值也可以实现换行。方法是在需要换行的地方加入回车符(Chr(13)或VbCr)和换行符(Chr(10)或vbLf),也可同时将两个符号连起来用vbCrLf表示。
例如:Text1.Text="第一行"+Chr(13)+Chr(10)+"另起一行"。
或:Text1.Text="第一行"+vbCr+vbLf+"另起一行"。
或:Text1.Text="第一行"+vbCrLf+"另起一行”。
上面三条语句效果一样。
注意:MultiLine属性只能够在程序设计的时候在属性窗口修改,不能通过程序代码来改变。
(4)ScrollBars属性:滚动条属性,为整数类型
ScrollBars属性返回或设置文本框是否有滚动条。当文本过长时,应该为文本框加滚动条以显示全部内容。ScrollBars的具体属性值如下:
属性值为0(默认值)时,无滚动条;属性值为1时,加水平滚动条;
属性值为2时,加垂直滚动条;属性值为3时,同时加水平和垂直滚动条。
注意:只有MultiLine属性为True时,ScrollBars属性才能起作用。ScrollBars属性也只能在设计时在属性窗口中进行修改。
(5)PasswordChar属性:密码文本框属性
PasswordChar属性返回或设置一个值,当在文本框中输入文本时,用该值代替显示文本。该属性在设计密码程序时非常有效。其值只能为一个字符,默认值为空。
注意:只有MultiLine属性为False,且PasswordChar值为非空格时,该属性设置才有效。
(6)文本编辑属性
①SelStart属性,数值类型,设置或返回文本框内被选定文本的起始位置,从0开始计数。
②SelLength属性,数值类型,设置或返回文本框内被选定文本的长度。
③SelText属性,字符串类型,设置或返回文本框内被选中的文本内容。
注意:上述3个属性只能在程序设计过程中在代码中进行修改或赋值,不能在属性窗口设置。
2.跟剪贴板有关的常用方法
在Windows系统中,剪贴板是常用的工具,VisualBasic可以方便地操作剪贴板(ClipBoard)对象,配合文本框来实现文本的复制、剪切和粘贴。剪贴板(ClipBoard)对象的常用方法有如下几个:
(1)Clear方法
清除剪贴板的内容。用法:ClipBoard.Clear。
(2)GetText方法
返回剪贴板内存放的文本。例如,要把剪贴板的内容复制到光标所在文本框内。
应用举例:Text1.SelText=ClipBoard.GetText。
当然也可以把剪贴板的内容赋值给字符串变量。
应用举例:Str1=ClipBoard.GetText。
(3)SetText方法
将指定内容送入剪贴板。
如将选中文本送入剪贴板:ClipBoard.SetText(Text1.SelText)。
将字符串常量送入剪贴板:ClipBoard.SetText(“Hello World”)。
例8.2 完成一个文本编辑器程序的(部分)设计,要求设计一个带有垂直滚动条的文本框,可以对文本框中选中的文本进行剪切、复制、粘贴和删除的操作。
1)界面设计如图8.4所示:

图8.4 剪贴板程序
各控件的属性设置如表8-1所示。
表8-1 属性设置
对象 属性 设计时属性值 说明
Form1 Caption 简单的文本编辑器
Text1 Multiline True 只有当Multiline属性为True时,ScrollBars设置才有效
ScrollBars 2-Vertical
Command1 Caption 剪切
Command2 Caption 复制
Command3 Caption 粘贴
Command4 Caption 删除
Command5 Caption 退出
2) 代码设计:

Private Sub Command1_Click() ' 剪切
Clipboard.SetText (Text1.SelText)
Text1.SelText = ""
End Sub
Private Sub Command2_Click() ' 复制
Clipboard.SetText (Text1.SelText)
End Sub
Private Sub Command3_Click() ' 粘贴
Text1.SelText = Clipboard.GetText
End Sub
Private Sub Command4_Click() ' 删除
Text1.SelText = ""
End Sub
Private Sub Command5_Click()
End ' 退出
End Sub
3.文本框的常用事件
(1)Change事件
当文本框的内容发生改变时,就触发该事件。
例如,如下代码:
Private Sub Text1_Change()
Print Text1.Text
End Sub
在文本框内输入“你好”二字时,窗体上面应该会输出两行,第一行为“你”,第二行为“你好”。
(2)KeyPress事件
当用户在文本框内按任意有效键时都会触发该事件,跟Change事件不同,KeyPress事件带有一个形参KeyAscII,当调用该过程时,KeyAscII返回按键的AscII值。
例8.3 完成一个密码检验程序的设计,已知初始密码为“1234567”,要求在文本框内输入密码后并按回车,如输入正确,则显示(标签Label2)“欢迎光临”,文本框停止输入;如果输入密码与“1234567”不吻合,显示“密码不符,请再输入一遍!”,同时清空文本框中的内容;要求最多允许输入3次密码,如果输入3遍后密码仍不吻合,显示“非法用户,请退出程序”,文本框不能用。
1)界面设计如图8.5所示:

图8.5 密码校验框
控件的部分属性如下:
表8-2 属性设置
对象 属性 设计时属性值 说明
Form1 Caption 密码测试小实验
Label1 Caption 输入密码
Text1 Text 设置为空
Label2 Caption 设置为空
Command1 Caption 退出

2)代码设计:
Private Sub Form_Load() '初始化设置
Label1.FontSize = 16
Label2.FontSize = 16
Label2.Visible = False
Label2.AutoSize = True
Text1.PasswordChar = "*"
Text1.MaxLength = 7
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Static times As Integer ' 静态变量,统计输入密码的次数
If KeyAscii = 13 Then ' 按下回车键
Label2.Visible = True ' 输入密码后显示Label2
times = times + 1 ' 用times变量表示输入第几次密码
Const mypassword As String = "1234567" ' 设置初始密码
If Text1.Text = mypassword Then ' 输入密码正确
Label2.Caption = "欢迎光临!"
Text1.Enabled = False
Else
If times < 3 Then ' 输入密码不正确
Label2.Caption = "密码不符,请再输入一遍!"
Text1.Text = ""
Text1.SetFocus ' 设置焦点,把光标自动放在文本框内
Else ' 第三次密码不正确
Label2.Caption = "非法用户,请退出程序"
Text1.Text = ""
Text1.Enabled = False
End If
End If
End If
End Sub
Private Sub Command1_Click()
End
End Sub
« 上一篇下一篇 »

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。