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