2024年1月4日发(作者:)

事件(Event):事件是指由系统事先设定的、能被对象识别和响应的动作。事件是指对象对于外部动作的响应,当对象发生了某个事件,就会执行与此对象的这个事件相应的代码,这段代码被称为“事件过程”。事件过程的命名格式为: Private Sub控件名_事件名()例如:我们在窗体上按了一下鼠标左键,这样就发生了一个窗体的“Click”(即单击)事件,并执行与其对应的事件过程。这个的事件过程名称为: Form1_Click我们可以为事件过程编写代码,使得当某个对象发生了某个事件时可以执行我们需要的一些操作。事件即控件对外部条件的反应,不同的控件具有不同的事件。如:对于命令按钮,通常情况下我们都是单击它,所以最常使用的是单击事件,对于驱动器列表框控件,通常我们使用的是它的改变事件。但我们使用控件的相应事件时,我们必须对其相应的事件进行编写代码,否则控件什么事情也不会做。事件处理器确定控件如何响应事件的事件过程可以称之为“事件处理器”。要为某一控件的特定事件编写程序,可以通过双击控件切换到代码窗口再选择相应的事件来完成,也可以通过“视图”菜单中的“代码窗口”命令切换到代码编辑窗口来完成。我们看到两个下拉列表框,第一个下拉列表框里包含了窗体中所有的控件,包括窗体本身;第二个下拉列表框中包含了选中控件的所有事件。在此状态下,要对某个控件进行编程,需要先在左边的下拉列表框中选中要编程的控件,然后再右边的下拉列表框中选择要编程的事件。例如我们要对“Commandl”控件的“KeyDown'’事件进行编程。控件名称和相应事件的名称共同构成了事件处理器的名称,如上图中所示的“Form Load ()”表示对象是“Form'’窗体,“Load'’表示窗体的加载事件,即窗体启动时发生的事件,对此事件进行编程可以确定窗体启动时所做的事情。常用的事件有两种,即鼠标事件和键盘事件。鼠标事件鼠标事件是Visual Basic编程中最常用到的事件,多数控件都支持鼠标操作,因此对鼠标事件进行编程是非常重要的。鼠标事件主要有以下几种:Click:单击事件,即单击鼠标时发生的事件。DblClick:双击事件,即双击鼠标时发生的事件。MouseDown:鼠标按下时发生的事件。MouseUp:鼠标抬起时发生的事件。

MouseMove:鼠标移动时发生的事件,对某控件的此事件进行编程,则当鼠标移过此控件时就会触发此事件,执行其相应代码。鼠标事件的发生顺序是:(1)首先发生的是MouseMove事件,当鼠标移动时,将会连续触发MoouseMove事件。(2)当鼠标按下时发生MouseDown事件。(3)鼠标松开时发生MouseUp事件。(4)如果按住的是鼠标左键,则Click事件在MouseUp之后发生。双击鼠标时事件发生顺序是:(1)当鼠标按下时发生MouseDown事件。(2)鼠标松开时发生MouseUp事件。(3)单击鼠标发生Click事件。(4)双击鼠标发生DblClick事件。(5)完成鼠标双击时发生MouseUp事件。在上面所列出的这些事件中,最常用到的就是Click事件和DblClcik事件,MouseMove和 douseUp事件不太经常用,一般用在需要对鼠标进行处理的地方。如:对于最常见的命令按钮,通常情况下我们使用Click事件;而在进行画图的时候,例如画一条直线,必须先按住鼠标左键,然后拖动鼠标,再松开鼠标。在此过程中,首先触发MouseDown事件,我们可以在此事件中记录鼠标的开始位置,再对MouseUp事件进行编程,以记录鼠标的结束位置;其中还要对MouseMoove事件进行编程,以在移动过程中进行处理画图操作,而不是 Click或DblClick事件。鼠标的单击事件定义如下:Sub Click()End Sub双击事件定义如下:Sub DblClick()End Sub对于MouseDown和MouseUp事件,它们的定义要复杂的多。对于MouseUp事件,其定义如下:Private Sub Labell _MouseUp(Button As Integer, Shift As Integer,X As Single, Y As Single)End S在上面的参数中,Button As Integer定义了参数Button,该参数是用于确定按下的是鼠标的左键,右键,还是中键,其取值如下表所示。常量数值说明VbleftButton 1按下鼠标左键VbRightButton 2按下鼠标右键

VbMiddleButton 4按下鼠标中键Shift As Integer定义整型参数Shift,该参数用于确定键盘上Shift键、Ctrl键、Alt键是否被按下,其取值如下表所示。常量说明VbShiftMaskVbCtrlMask按下Shift键按下Ctrl键VbAltMask按下Alt键要判断是哪个键被按下了,要由相应的程序代码来完成。如:Private Sub Labell MouseUp(Button AS Integer,Shift As Integer,X aS Sing , Y as Single)If Button=VbRightButton ThenMsgbox(“你按下去的是鼠标右键”)End IfEnd Sub此段代码在鼠标抬起时执行,程序中用If条件判断语句来判断究竟是哪个键被按当Button=VbRightButton成立时,即鼠标右键被按下,这时可以执行相应的操作。Private Sub Labell MouseUp(Button As Integer,Shift As Integer,X as Sin2 Single)If Shift=2 ThenMsgbox(“单击鼠标时Ctrl键被按下”)EndIfEnd Sub这段代码在执行过程中判断当鼠标抬起时键盘上哪个键被按了下去。如上表说明,当Shift值为2时,表示Ctrl键被按了下去。由上面的例子可以看出我们可以对鼠标进行一些判断,然后执行一些特殊操作,但用起来通常比较麻烦。

键盘事件鼠标事件是由鼠标键的单击、双击、移动等操作时发生,键盘事件则是在键盘的某个键按下去时触发。除了鼠标事件外,通常需要对键盘事件进行编程。键盘事件主要有以下几种:(1)KeyDown:当键盘上某键被按下去时发生。(2)KeyUp:键盘上的键抬起来时发生。(3)KeyPree:此事件发生在键盘被按下后和字符被显示出来之前发生。对于键盘事件,相对来说KeyDown事件和KeyUp事件使用比较少,通常情况下对KeyPress事件编程较多,因为此事件注重键盘被按下的是哪个键KeyPress事件定义如下:Private Sub Textl_KeyPress(KeyAscii As Integer)End Sub其中,参数KeyAscii被定义为整型变量,表示被按下去键的Ascii码,我们可以通过对变量KeyAscii值的判断来执行一些特殊操作。例如要想实现在文本框中只能输人数字,不接受其它字符,可以编写如下代码:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii < 48 Or KeyAscii > 57 ThenKeyAscii = OEnd IfEnd Sub此段代码表示:如果被按下去的键的Ascii码值不在48到57之间(即输入不是数字),则将KeyAssii值设置为零。从而不进行操作,文本框中并不存在输入的字符。(4) Change:Change事件在控件的内容发生改变时执行。如:当我们要做一个类似记事本程序的时候,用文本框控件作为内容编辑区,当文本框内容改变而并未保存时,用户却在此时退出程序,我们希望程序能够给出提示。可以通过定义一个整型变量“IsChang",当其值为0时表示未存盘,其值为1时表示存盘了,在文本框控件的change事件中输入如下代码:“IsChange=0"。在程序退出事件中对IsChange值进行判断,当值为0时就给予提示,否则退出程序。程序代码如下:Private Sub Textl_Change()IsChange=0End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode AsInteger)If lsChange = 0 Then

MsgBox ("还未存盘,是否存盘"), VbOkCancle, "提示!"End IfEnd Sub此段代码用于程序退出时的判断,Form_QueryUnload事件表示程序退出时所执行的事件。这里主要介绍了事件处理器,常见的属性与各种事件,在Windows应用程序中,我们经常要用到上面所介绍的属性与事件。焦点在开发Windows程序时,有一个很重要的概念——焦点。所谓焦点,就是控件能够接受键盘输入的当前状态。只有具有焦点的控件,才能接受用户的键盘输入;换一种说法也可以这样说,当前状态下用户所有的键盘输入只能被具有焦点的控件所获得。需要注意的是,焦点只是在程序运行时才有的概念,也就是说在设计程序时,不能说某个控件具有焦点或不具有焦点。焦点是对象接受用户鼠标操作或键盘操作的能力。当对象具有焦点时,才可以接受用户的操作。例如,在有就几个文本框的窗体中,只有具有焦点的文本框才能接受用户的输入。要使用某个控件获得焦点,可以有如下三种方法:(1)、使用键盘上的“Tab”键,将焦点移到相应的控件上。(2)、使用鼠标直接在相应的控件上单击就可以了。(3)、在程序代码中使用该控件的“SetFocus”方法。对于绝大多数的控件,都具有“TabStop”属性和“Tablndex”属性。其中,“TabStop”属性是用来设置是否允许用户使用“Tab”键将焦点移到该控件上,默认情况下是允许的。“TabStop”属性有两个取值:“True”和“False”,若其值为“True”时,允许使用“Tab”键将焦点移到该控件;否则,就不允许。但要注意,不管“TabStop'’属性的取值为“True”还是为“False”,使用鼠标都可以将焦点转移到该控件。“Iablndex”属性则是用来设置该控件的跳表顺序的。前面已经说过,使用“Tab”键可以将焦点从一个控件上转移到另一个控件上,在这个过程中就有一个跳表顺序的问题。也就是说,当用户第一次按下“Tab”键时,焦点将会移到哪一个控件上;第二次按下“Tab”键时,焦点又会移到哪一个控件上等,这个顺序就是跳表顺序。在设计窗体时,跳表顺序是根据控件放人窗体的先后顺序来决定的。即第一个放人窗体的控件将最早获得焦点,以后每按一次“Tab”键,焦点就会转移到下一个放人窗体中的控件上。在很多情况下,某些控件不需要使用“Tab”键将焦点移到该控件上或是不能根据控件放人窗体的先后顺序来决定跳表顺序,这时就需要设置

“TabStop”属性和“Tablndex'’属性了。“Tablndex”属性的取值是一个整数,从0开始依次类推,该属性的值小的将先获取焦点。另外,还有两个与焦点相关的事件:“GotFocus”事件和“LostFocus”事件。当焦点从一个控件转移到另一个控件上时,前者即曾经拥有焦点的控件,将会发生“LostFocus”事件而后者即将会拥有焦点的控件,则会发生“GotFocus”事件。以下是VB中的常见事件:change对于滚动条来说,滑块位置改变;对于textbox来说,内容改变click对象单击dblclick对象双击dragdrop鼠标拖动dragover鼠标拖过dropdown鼠标键松开error错误处理gotfocus获取焦点itemcheckkeydown键盘按下keyup键盘抬起keypress键盘按键linkclose网络连接关闭linkerror网络连接错误linknotifylinkopen网络已连接oledragoverolegivefeedbackolestartdragpathchangepatternchangerepositionscrolltimer定时器计时达到预定间隔validateLostFocus对象失去焦点Load对象加载,比如form的加载MouseDown鼠标按下MouseMove鼠标移动MouseUP鼠标抬起

OlecompleteDrag ole对象的拖动OleDragDrop ole对象的移动paint绘画QueryunLoadResize form或者控件大小重绘Terminate线程,进程终止Unload卸载