|
在Visual Basic操作界面中,CommandButton(命令按钮)控件所代表的图标如图

CommandButton,又称命令按钮。通常用户单击它,将执行一系列命令。
CommandButton 控件在程序中主要作为按钮进行使用。默认的名称为 CommandX(X为
1、2、3,等等),命名规则为 CmdX(X为用户自定义的名字,如 CmdCopy、CmdPaste ,等等)。
一、CommandButton 的主要属性:
1、Cancel(取消)属性:
当一个按钮的 Cancel 属性设置为 True 时,按 ESC 键与单击此命令按钮的作用相同,因此,这个命令按钮被称为取消按钮。
2、Default(默认)属性:
当一个按钮的 Default 属性设置为 True 时,按回车键与单击此命令按钮的作用相同,因此,这个命令按钮被称为默认按钮。
与 Cancel 的设置一样,在一个窗体中,只允许一个命令按钮的 Default 属性设置为 True
3、Caption(标题)属性:
跟其他控件的 Caption 属性一样,都用来显示控件标题的属性。这里要强调的是,作为按钮控件,用户可以给按钮控件的 Caption
指定快捷方式。
方法是在按钮 Caption 属性中欲作为快捷键的字母前加上一个 “&” 符号,程序运行时,该字母的下面会自带一条下划线,同时按下
Alt 键和带有下划线的字母,功效相当于用鼠标点击该按钮。
4、Enabled(可用)属性:
本属性决定了控件是否可用的问题。当值为 False ,按钮在程序运行时呈灰色,不能响应用户的鼠标动作;只有当值为
True ,按钮才能使用。
本属性可以在设置界面时予以指定
也可以在程序中修改,代码如下: 按钮控件名称.Enabled = True/False
例一:两个命令按钮,按钮一(CmdEnable)初始状态为可用,按钮二(CmdFalse)初始状态不可用。点击按钮一,按钮二变为可用,按钮一变为不可用;点击按钮二,按钮一变为可用,按钮二变为不可用。
程序界面如图六:

程序代码如下:
按钮一:
Private Sub CmdEnable_Click()
CmdFalse.Enabled = True
CmdEnable.Enabled = False
End Sub
按钮二:
Private Sub CmdFalse_Click()
CmdFalse.Enabled = False
CmdEnable.Enabled = True
End Sub
5、Style(类型)与 Picture(图片)属性:
也许你想让应用程序的操作界面更美观一点,也许你想在某个按钮上添加幅小图片,那么,你就得使用到本控件的 Style
与 Picture 属性。
铵钮控件共有两种 Style ,一种是标准型(Standard),中用 VbButtonStandard ,或者 0 - Standard 表示;表示标准风格的命令控件,它既不支持背景颜色BackColor,也不支持图片属性Picture。
另外一种是图形型(Graphical)用 VbButtonGraphical ,或者 1 表示。 它既能设置BackColor,也能设置Picture属性。
所以要让Command控件显示图形,只需将其Style 属性设置为 1 即可。Style 属性可以在界面设置过程中予以指定,
也可以在程序中改变,代码如下:
按钮名称.Style = VbButtonStandard/VbButtonGraphical
或者:按钮名称.Style = 0/1
只有当按钮的 Style 设置为 Graphical 类型时,按钮的 Picture 属性才起作用。本属性能在指定的按钮上添加图片。
可以在界面设置过程中为按钮指定图片
也可以在程序中进行指定,代码如下:
按钮名称.Picture = "图形文件所在的路径与文件名",例如:CmdPicture.Picture
= "D:image1.jpg"

style为 1 - Graphical
可设置 BackColor 属性
|

style为 1 - Graphical
可设置 Picture 属性
|
| 当我们用鼠标点击CommandButton控件时,要产生Text1控件移动的情况,则可以在代码窗口的Command1_Click区域中加入代码。现在运行程序。单击命令按钮,Text1控件就向左移动了些。看清楚,当用户单击Command1
按钮时,就使程序执行Command1_Click中的代码,而这个Click,就是事件。 |

|
现在的Windows程序都有这种响应用户操作的特点,这就是所谓的“事件驱动程序”。 想想看,还有没有其它事件?象鼠标移动、双击、右击、拖动、键盘按下,这些用户对计算机的常用操作都是事件。
不过并不是所有的控件都有这些事件,如CommandButton控件,就不具有双击的事件。不同类型的控件所具有的事件是不同的。
另外,事件并不单指用户的操作,它还包括一些别的因素。如,程序刚启动时,将触发启动的窗体的Load事件。我们将通过以后的学习来不断提高对事件的认识。
事件这个概念很重要,我们设计的程序代码,大多都应放在相应的事件中。用户对程序的不同操作,将引发不同的事件过程。
二、CommandButton 的事件:
命令按钮最常用的事件是鼠标点击(Click)事件,当点击按钮时,犹如发出了一道命令,而这也正是“命令按钮”这个说法的由来。
现在我们通过一个有趣的小程序“自由的小青蛙”来看看其中的小青蛙是怎样通过不同的事件来完成各种动作的。
左右跳--按“Z”键,
对青蛙点鼠标左右键
上下跳--按“X”键,
对青蛙点鼠标左右键
落 水--双击莲花
还 原--对莲花点鼠标右键
蛙 鸣--按“C”键 |
 |
窗体设计界面中,我们可以看出这个程序界面是由一个包含图形的窗体,一个Command控件,一些Label控件,还有几个PictureBox
控件所组成。关于PictureBox,将在后一节作详细介绍,现在我们只是通过它来认识一下事件。
移动鼠标,触发了lblmj的MouseMove事件。
按“Z”键,触发了窗体的 KeyPress事件。
单击左键和右键,分别触发了两个PictureBox控件的MouseDown事件。
按“C”键,又触发了窗体KeyPress事件。
双击左键,触发了lbltb的DblClick事件。
单击左键,触发了Lbltb的MouseDown事件。
讲到现在,对于属性、方法、事件这三个概念,你弄懂了吗?
| 再举个例子吧:如果我按一下CommandButton按钮,要让一个蓝色的Label控件移动,那么,蓝色是Label控件的属性;而移动则是
Label控件的方法,至于什么时候移动,则要放进Command1_Click这个事件中让它发生。 |
 |
这三个基础性概念对今后学习VB重要。当你学到一定的程度,尝试自己制作ACtiveX控件时,如果概念不清的话,将“方法”弄成“事件”,“事件”混成“属性”,张冠李戴,会吃足苦头!
搞清楚了属性、方法、事件这三个概念,以后理解控件就更能从全方位去考虑,而不光是只从属性角度来看控件了。
现在来看一下用户的常用操作所产生的事件。
鼠标事件
Cilck:用户单击鼠标键时发生
DbLClick:用户双击鼠标键时发生
MouseDown:用户释放鼠标键时发生
MouseMove:移动鼠标时发生
键盘事件
KeyDown:在键按下时触发。(可获得一个KeyCode值)
KeyUp:在键弹起时触发。(可获得一个KeyCode值)
KeyPress:在键盘按下再弹起时发生。(它可获得KeyAscii值)
慢着,既然有了KeyDown和KeyUp,为什么还要KeyPress事件,我将键盘按下去后,到底是触发了KeyPress事件,还是KeyDown或KeyUp事件?
答案是,当我们按了一下键盘后,这三种事件都触发。
一般而言,大多数程序并不关心KeyDown事件来确定按下的键,KeyPress事件在触发后,能够获得一个KeyAscii值。它指键盘上的某个键与计算机ASCII码对应的值,如键“1”,KeyAscii为49;“A”,KeyAscii为65;“Enter”,KeyAscii为13。
当我们在KeyPress事件中将KeyAscii的值改为0后,就等于禁止键入。
| 来看一下这个文本框,由点到面在此控件的KeyPress事件中有这样一段代码,所以用户无论按了任何键,都不能对其输入文字。 |
 |

然而并不是所有键盘上的键都有其KeyAscii值,有时,我们程序要判断用户是否按了功能键,可要区别数字小键盘和常规数字键时,那么KeyAscii就无能为力了。此时可以考虑KEyDown和KeyUp事件,当用户击键后,它们能获得一个唯一的KeyCode值,从而判断用户到底按了键盘上的哪个键。可以说,键盘上大多数键(Tab、PrintScreen键除外),都有唯一的KeyCode序列号。
总而言之,我们编程序可以根据需要来确定所选用的事件,如果是针对文本操作,一般采用KeyPress事件较好,因为它能获得一个与ASCII码相通的KeyAscii值。
从这一节课中,我们了解到了Command_Button的一些常用知识。CommandButton俗称命令按钮,很多程序的代码,都是编写在CommandButton控件的Click事件中的。
在这一节中,我们还接触了事件这个概念。VB属于事件驱动程序,它的程序代码,大多是写进一个个事件过程中的,所以,我们除了要了解用户的常用鼠标事件和键盘事件外,还必须灵活掌握代码设计器中的事件选择框,它能为我们编程带来方便。
如果深入搞清了KeyAscii与KeyCode的区别,以及KeyPress与KeyDown和KeyUp的区别的话,可以使我们的编程水平再上一个档次。
|