1、主讲老师:主讲老师:韩维良韩维良2005.3二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 第一节第一节 KeyPressKeyPress事件事件针对键盘的事件,主要是以下三种:KeyDown、KeyUp事件:按键的按下/放开事件。KeyPress事件:按键事件。用户按下任一键则引发KeyDown事件,松开则引发KeyUp事件。用户按下并释放按键,便引发KeyPress事件。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 在用键盘输入的场合,如在文本框中输入信息,KeyPress 事件常用于判断按了什么键,当在键盘上按键时将触发该事件。每按一次键
2、,拥有输入焦点的控件都会发生这个事每按一次键,拥有输入焦点的控件都会发生这个事件,可以用其检测如输入密码时字符的合法性等件,可以用其检测如输入密码时字符的合法性等。某一时刻,只有一个控件拥有输入焦点,如果窗体上没有活动的或可见的控件,则输入焦点位于窗体上。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 能响应能响应KeyPressKeyPress事件的控件有事件的控件有:窗体、复选框、组合框、命令按钮、列表框、图片框、文本框、滚动条及与文件有关的控件。要用法如:对输入的信息进行合法性检测,前面讲过的口令文本框中只允许输入数字字符,输入其它字符则响呤,并取消输入的字符。又
3、如小写换大写。例如,如果希望将文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Private Sub Text1_KeyPress(KeyAscii As Integer)KeyAscii=Asc(Ucase(Chr(KeyAscii)End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 第二节第二节 KeyDownKeyDown和和KeyUPKeyUP事件事件keydown按下事件、keyup弹起事件过程的形式为:Private Sub Form_KeyDown(
4、KeyCode As Integer,Shift As Integer)End SubPrivate Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 1 1、KeycodeKeycode返回的是用户所按键的ASC码;大小写字母用同一个按键,其ASC码为大写字母的ASC码;单键双字符键中,返回的是其下档字符的ASC码。另外,大键盘上的数字键与小键盘上的数字键不同。如按下“A”、“a”则返回的Keycode均为65(即&H41)。二级VB程序设计教程第十章第十
5、章 键盘与鼠标事件过程键盘与鼠标事件过程 2 2、ShiftShiftShift用于返回用户在按键时,是否按下shift、ctrl或Alt键构成组合状态。返回值返回值操操 作作返回值返回值操操 作作0三键都未按4按下Alt键1按下shift键5按下Shift键和Alt键2按下ctrl键6按下Ctrl中键和Alt键3同时按下shift键和ctrl键7同时按下三键二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 一般情况下,在程序中,通过判断Keycode和Shift两个参数的值,来确定用户按了什么键。如下:当用户按下某个键时,在标签中显示出对应的字符,当放开按键时,消失。P
6、rivate Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)Label1.Caption=Str(KeyCode)+-+Chr(KeyCode)End SubPrivate Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)Label1.Caption=End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 对于组合键,对多种可能的情况都要一一判断:Private Sub Form_KeyDown(KeyCode As Integer,Shift As
7、Integer)Select Case ShiftCase 0X$=按下Case 1X$=按下ShiftCase 2X$=按下CtrlCase 3X$=按下Shift、Ctrl二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Case 4X$=按下AltCase 5X$=按下Shift、AltCase 6X$=按下Ctrl、AltCase 7X$=按下Shift、Ctrl、AltEnd SelectLabel1.Caption=X+-+Str(KeyCode)+-+Chr(KeyCode)End SubPrivate Sub Form_KeyUp(KeyCode As I
8、nteger,Shift As Integer)Label1.Caption=End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 第三节第三节 鼠标事件鼠标事件前面所学的鼠标事件主要是:Click事件:以鼠标左键单击对象时所引发的事件。另外与此比较相近的还有DblClick事件:以鼠标左键单击对象时所引发的事件。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 1 1、MouseDownMouseDown事件事件将鼠标指针置于对象上,按下某一键时被触发。Private Sub Form_MouseDown(Button As Intege
9、r,Shift As Integer,X As Single,Y As Single)End Sub 二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 2 2、MouseUpMouseUp事件事件释放所按的键时被触发。Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)End Sub 与MouseDown成对出现(按下了才会有释放),当按下键,则触发MouseDown,当释放键时,触发MouseUp。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与
10、鼠标事件过程 3 3、MouseMoveMouseMove事件事件将鼠标指针置于对象上,将鼠标指针移动时被触发。Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)End Sub 二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Button:用来判断按下的是鼠标的哪一个键。Shift:判断是否按下shift、ctrl或Alt键构成组合状态。X和Y:返回指针所在的位置。Button返回的值返回值返回值操操 作作返回返回值值操操 作作0未按任何键4按下中键
11、1按下左键5按下中键和左键2按下右键6按下中键和右键3同时按下左键和右键7同时按下左、中、右键二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Shift的返回值返回值返回值操操 作作返回返回值值操操 作作0三键都未按4按下Alt键1按下shift键5按下Shift键和Alt键2按下ctrl键6按下Ctrl中键和Alt键3同时按下shift键和ctrl键7同时按下三键二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 上面的两个参数表中,各返回值实际上就是三位二进制数的不同组合。例:鼠标点那儿,对象移动到那儿。建立一个窗体,上面有一个按钮。Privat
12、e Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)Command1.Move X,YEnd Sub类似于射击游戏。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 第四节第四节 鼠标指针的形状鼠标指针的形状鼠标指针的形状用于反映系统当前所处的状态,在Windows系统中,是很重要的环节;在不同的环境中,显示成不同的形状,便于用户识别。最基本的如:指向超链接时变成手形。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 鼠标指针位于某个对象上时,
13、其形状由对象的MousePointer属性来设置。一般情况下,Windows默认地对不同的控件设置了不同的形状,如窗体上,朝左倾斜的箭头,在文本框中为插入点形状等。如果要改变默认的形状,则可以通过设置对象的MousePointer属性来实现。常量常量数值数值描描 述述vbDefault0(缺省值)形状由对象决定vbArrow1箭头vbCrosshair2十字线(crosshair指针)vbIbeam3I型vbIconPointer4图标(矩形内的小矩形)vbSizePointer5尺寸线(指向东、南、西和北四方向的箭头)vbSizeNESW6右上-左下尺寸线(指向东北和西南方向的双箭头)vbS
14、izeNS7垂-直尺寸线(指向南和北的双箭头)常量数值描 述vbSizeNWSE8左上-右下尺寸线(指向东南和西北方向的双箭头)vbSizeWE9水平尺寸线(指向东和西两个方向的双箭头。vbUpArrow10向上的箭头vbHourglass11沙漏(表示等待状态)vbNoDrop12不允许放下(圈内一斜线,无法操作)vbArrowHourglass13箭头和沙漏VbArrowQuestion14箭头和问号VbSizeAll15四向尺寸线VbCustom99通过MouseIcon属性所指定的自定义图标二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 默认情况下是0,由系统设
15、置的默认值决定形状,99时,鼠标指针的形状由MouseIcon属性设置鼠标指针的形状,由用户自行设置。具体设置时,一方面,可以在属性窗口中设置,还可以在程序代码中设置。当用户设置特殊的鼠标形状时,需要以Icon图形的形式指定鼠标指针的形状。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 第五节第五节 拖拖 放放在设计 Visual Basic 应用程序时可能经常要在窗体上拖动控件。Visual Basic的拖放功能使用户在程序运行时也能具有这种能力。拖动是指将鼠标指针指向某个控件,按下左键并移动至目的地后释放,全过程经历MouseDown、MouseMove和Mouse
16、Up等三个事件。为有效地对拖放进行响应,VB提供了两个专门事件。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 一、与拖放有关的属性、事件和方法一、与拖放有关的属性、事件和方法1 1、属性、属性DragMode:设置控件的拖动方式。0手式拖动 1自动拖动DragIcon:指定拖动控件时显示的图标。在拖动的过程中,被拖动的控件本身并没有动,为形象地表示拖动的过程,需要指定一个图标;并控件本身位置的改变必须通过程序代码来设置。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 2 2、事件、事件为准确地理解拖放,有两个重要术语:源和目标。源源:被拖动的控
17、件。此控件是 menu、timer、line 或 shape 外的任一对象。目标目标:其上放控件的对象。此对象可为窗体或控件,能识别 DragDrop 事件。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 DragDropDragDrop:鼠标指针指向源控件,按下左键并移动至目的地后释放时,目标对象将产生DragDrop事件。事件过程的框架如下:Private Sub Form_DragDrop(Source As Control,X As Single,Y As Single)End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 sou
18、rcesource参数参数:指被拖动的控件。X X,Y Y:指拖动的目的地坐标。即拖动到什么位置。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 DragOverDragOver:在拖动源对象的过程中,目标对象将产生DragOver事件。Private Sub Form_DragOver(Source As Control,X As Single,Y As Single,State As Integer)End SubX X,Y Y:移动过程中,鼠标指针当前所在的位置;移到那儿,X,Y指那儿 二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Sta
19、teState:用于指出源与目标对象的关系。0源对象正地进入目标对象中。1源对象正地退出目标对象。2源对象正位于目标对象中。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 3 3、方法、方法Drag用于启动或停止手工拖动。与DragMode属性的值无关。0取消指定控件的拖动操作。1开始拖动操作,允许拖放指定的控件。2结束拖动操作。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 二、自动拖放二、自动拖放设置自动拖放属性后,即可进行拖放操作,同时可在目标对象的拖放事件中对拖动作出响应。如:在窗体上有两个图片框Picture1、picture2。分别设
20、置DragMode、DragIcon属性。当拖动这两个图片框时,在窗体的DragDrop事件过程中作出响应。二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 Private Sub Form_DragDrop(Source As Control,X As Single,Y As Single)Source.Move X,YEnd Sub也可以将DragDrop将改为DragOver,体验DragOver事件的响应。Private Sub Form_DragOver(Source As Control,X As Single,Y As Single,State As Int
21、eger)Source.Move X,YEnd Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 三、手工拖放三、手工拖放将DragMode设置为0。此时进行拖动,必须借助于MouseDown、MouseUp事件在按下鼠标时,用Drag方法打开拖动开关,释放鼠标时,关闭拖动开关。Private Sub Picture1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)Picture1.Drag 1End Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过
22、程 Private Sub Picture1_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)Picture1.Drag 2End SubPrivate Sub Form_DragDrop(Source As Control,X As Single,Y As Single)Source.Move X,YEnd Sub二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程 二级VB程序设计教程第十章第十章 键盘与鼠标事件过程键盘与鼠标事件过程