教学课件第8章事件驱动程序设计新版_第1页
教学课件第8章事件驱动程序设计新版_第2页
教学课件第8章事件驱动程序设计新版_第3页
教学课件第8章事件驱动程序设计新版_第4页
教学课件第8章事件驱动程序设计新版_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 8 章 事件驱动程序设计 8.1 事件与事件驱动程序设计 8.2 常 见 键 盘 事 件 8.3 常 见 鼠 标 事 件8.1 事件与事件驱动程序设计 8.1.1 事件程序的结构与驱动 1面向过程编程与事件驱动编程 (1)面向过程编程用面向过程的语言编写的应用程序按照代码顺序运行,每次执行一行代码,执行过程中根据不同的代码语句,执行不同的逻辑分支或跳转到程序的其他部分。在面向过程编程中,程序负责控制用户如何输入信息。 图8-1 选择控制结构 (a)流程图 (b)n-s 图 真 假 p a b 真 p 假 a b (2)事件驱动编程 在visual basic中编写的应用程序是事件驱动的。在

2、基于事件驱动的应用程序中,只有当特定事件调用该事件所对应的代码时,程序语句才开始执行。键盘输入、鼠标事件、操作系统或程序代码都可以触发事件。事件驱动程序会持续检测和响应事件。事件发生时,如果与之对应的事件包含响应代码,visual basic就会执行这些代码。当单击窗体的“button1”按钮时,将会触发鼠标单击(click)事件,此时,visual basic运行过程sub button1_click中的代码。代码运行完后,visual basic等待下一个事件的发生,如图8-2所示。 图8-2 事件驱动编程示例 下面是事件驱动应用程序中的典型事件序列。 启动应用程序,加载和显示窗体。 窗体

3、(或窗体上的控件)接收事件。事件可由用户引发(例如鼠标操作),也可以由系统引发(例如定时器事件),还可由代码间接引发(例如,当代码加载窗体时的load事件)。 如果在相应的事件过程中存在代码,就执行代码。 然后,应用程序等待下一次事件。 2visual basic窗体的常用事件 (1)activate事件 (2)click事件 (3)dblclick事件 (4)deactivate事件 (5)initialize事件 (6)load事件 (7)mousedown事件 (8)queryunload事件 (9)resize事件 (10)terminate事件 (11)unload事件 8.1.2

4、事件的驱动对象 在这里的对象概念主要是指visual basic提供的现成对象,这也是visual basic的重要特征之一。visual basic中的对象主要分为窗体和控件两类。窗体是用户工作区,所有控件都在窗体中得到了集成,从而构成应用程序的界面;控件是指“空的对象”或基本对象,是应用程序的图形用户界面的一个组件,对其属性可以进行不同的设置,从而构成不同的对象。使用鼠标在某个控件上双击,即可将该控件复制到窗体中,通过对其属性的不同设置,可建立不同的应用程序。visual basic的工具箱如图8-3所示。 命令按钮 标签 文本框 在工具箱中的文本框控件上用鼠标双击,即可将该控件复制到窗体

5、的正中央。然后,用鼠标指向窗体中的该控件,按下鼠标左键并移动鼠标,将该控件拖动到另一位置。用同样的方法可将标签和命令按钮控件复制到窗体中,如图8-4所示。 图8-4 窗体和控件 8.2 常 见 键 盘 事 件 8.2.1 键盘事件的认识键盘是计算机的标准输入设备。键盘事件由键盘的键入产生。 visual basic可以响应3种键盘事件: keydown事件、keyup事件和keypress事件利用键盘事件可以编程进行多种键盘操作,也可以处理ascii值代表的字符。 对键盘事件的处理可以分为两个层次:控件级和窗体级。 注意,某些控件能够拦截键盘事件,以致窗体不能接收键盘事件。如命令按钮控件有焦点

6、时的enter键、焦点在列表框上时的方向键等。 8.2.2 keypress事件用户单击并松开一个ansi标准键时,产生一个keypress事件。任何可打印的键盘字符,来自标准字母表的字符或少数几个特殊字符与ctrl键的组合,回车键或空格键都可以触发keypress事件。 keypress事件常用于文本框的事件处理。 sub form_keypress(keyascii as integer) 窗体的事件过程 sub object_keypressindex as integer,keyascii as integer) 窗体控件的事件过程其中,参数keyascii为按键的相对应的ascii值

7、。 一般来说,当用户对当前具有控制焦点的对象进行按下并释放的键盘操作时,直接引发该对象的keypress事件。但是,如果窗体的keypreview属性设置为true,则首先触发窗体的keypress、keyup和keydown事件,利用这些事件过程可以先滤去一些信息,然后传送给对象的keypress、keyup和keydown事件。也就是说,如果窗体的keypreview属性设为true,并且窗体级事件过程修改了keyascii变量的值,则当前选中对象的keypress事件将接收到修改后的键盘码,如果窗体级事件过程将keyascii设置为0,则不再调用对象的keypress事件过程。利用key

8、press事件,可以对输入的数据进行限制。 8.2.3 keydown事件和keyup事件keydown和keyup事件是对键盘事件的最低级的反应。在焦点置于每个对象的条件下,用户 单 击 键 盘 将 出 触 发keydown,松开键盘时将触发keyup事件。 keydown事件过程的语法格式: private sub对象名_keydown(keycode as integer,shift as integer) keyup事件过程的语法格式: private sub 对象名_keyup(keycode as integer,shift as integer) 注意,以下情况不能触发keydo

9、wn和keyup事件: 窗体有一个命令控件,并且default属性设置为ture时的enter键; 窗体有一个命令控件,并且cancel属性设置为ture时的esc键; tab键。 8.3 常 见 鼠 标 事 件 8.3.1 鼠标事件的认识mousedown、mouseup和mousemove事件是visual basic最常用的鼠标事件,大多数控件都可以识别这3个事件。 单击鼠标时,将触发mousedown事件;松开鼠标时,将触发mouseup事件;鼠标移动到新位置时,将触发mousemove事件。 mousedown事件过程的语法格式: private sub对象名_mousedown(b

10、utton as integer,shift as integer,x as single,y as single) mouseup事件的语法格式: private sub对象名_mouseup(button as integer,shift as integer,x as single,y as single) mousemove事件的语法格式: private sub对象名_mousemove(button as integer,shift as integer,x as single,y as single) 注意:mousedown和mouseup事件所使用的参数与mousemove事

11、件使用的button参数不同。 mousedown和mouseup事件:button参数要精确地指出每一个按钮的当前状态。 mousemove事件:button参数指出所有按钮的当前状态。8.3.2 click事件与doubleclick事件 以鼠标左键单击对象时,将触发click事件;以鼠标左键双击对象时,将触发dblclick事件。对于窗体对象,单击或双击一个空白区域或一个无效控件时触发click事件和dblclick事件。 click事件过程的语法格式: private sub对象名_click() dblclick事件过程的语法格式: private sub对象名_dblclick() 8.3.3 鼠标拖放事件用鼠标将一个对象拖动到另一个对象上时,无论鼠标是否松开,都会在目标对象上触发一个dragover(拖动)事件。松开按钮后,还会触发一个dragdrop(拖放)事件。 dragover事件过程的语法格式: private sub对象名_dragover(source a s c o n t r o l , x a s s i n g l e , y a s single,state as integer) dragdrop事件过程的语

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论