您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 第7章 键盘和鼠标事件
第7章键盘和鼠标事件过程易唐唐考点分析1、KeyPress事件(80%)2、KeyDown事件和KeyUp事件(70%)3、鼠标事件(70%)键盘事件用来处理当按下或释放键盘上某个键时所执行的操作。VB提供了3种键盘事件:KeyPress事件KeyDown事件KeyUp事件考点01:KeyPress事件KeyPress事件,是用户在拥有焦点对象上使用键盘完成的一次完整的按键操作所触发的事件。只有数字、字母符号、【Tab】、【Enter】和【Backspace】等按键才会触发KeyPress事件。语法格式:PrivateSub对象名_KeyPress(KeyAsciiAsInteger)语句块EndSubKeyPress事件参数说明:1、KeyAscii参数返回所按键对应的ASCII码的整型数值。同一个字母的大小写状态对应的值不同。例:按下“A”键,KeyAscii的值为65,按下“a”键,则KeyAscii的值为97。2、KeyPress事件不能识别按键的状态。即字母大小写无法区分。例KeyPress事件要求:利用KeyPress事件对输入值进行限制,只允许输入0~9的数字。若输入其它字符,则响铃,并消除该字符。Beep‘响铃KeyAscii=0‘避免输入的字符在文本框中回显。考点02:KeyDown和KeyUp事件KeyDown和KeyUp事件和KeyPress事件接收到的信息不完全一样,它们能检测到KeyPress事件不能检测到的功能键、编辑键和箭头键。1、KeyDown事件是用户在具有焦点的对象上按下任意键盘键的操作。语法格式如下:PrivateSub对象名_KeyDown(KeyCodeAsInteger,ShiftAsInteger)语句块EndSubKeyDown事件说明:(1)KeyCode参数,是按键的扫描码(物理码)。字母键的操描码是一样的,都识别成大写字母。但编辑键区的数字键和数据键区的数字键的KeyCode是不一样的。对于双字符键,其KeyCode为下档字符的ASCII码。(2)Shift参数:Shift表示在该事件发生时响应Shift、Ctrl、Atl键的组合状态,它是一个整数。Shift参数说明参数Shift值参数(Shift)值描述vbShiftMask1SHIFT键被按下vbCtrlMask2CTRL键被按下vbAltMask4ALT键被按下Ctrl、Shift、Alt三键组合使用情况KeyUp事件是用户在具有焦点的对象上释放任意键盘按键的操作。语法格式:PrivateSub对象名_KeyUp(KeyCodeAsInteger,ShiftAsInteger)语句块EndSub其中各参数同KeyDown事件。例1KeyDown和KeyUp事件要求:程序运行后,按下某个键,则在标签上(窗体上)显示此键的扫描码;而松开该键时,标签内的扫描码即被清除。例:用Shift参数判断是否按下了字母A的大写形式。PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKeyAAndShift=1ThenMsgBoxYoupressedtheuppercaseAkey.EndifEndSub例如:下例是用Shift参数判断是否按下上档字符。PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=vbKey1Andshift=1ThenMsgBoxYoupressedthe!key.“EndifEndSub鼠标事件VB中,提供了5种鼠标事件:Click、DblClicMouseDown(按下鼠标按键事件)MouseUp(释放鼠标按键事件)MouseMove(移动鼠标指针事件)对于后3种事件,系统除了可以识别鼠标操作外,还可以识别出鼠标的位置及状态,且它们的参数相同。考点03:MouseDown事件当用户在某个对象上按下任一鼠标按键时发生。格式:PrivateSubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub参数说明:(1)Button参数是用来标识事件的产生是通过按下哪个鼠标键触发的,返回的是一个整数。Button参数说明参数Button值参数(Button)值说明vbLeftButton1左按钮被按下vbRightButton2右按钮被按下vbMiddleButton4中间按钮被按下MouseDown事件(2)Shift参数用来确定键盘上的Shift、Ctrl和Alt键的组合状态。具体定义同键盘事件。(3)X、Y,返回鼠标指针当前的位置坐标。注意:鼠标事件被用来识别和响应各种鼠标状态,并把这些状态看作独立的事件,在按下鼠标按钮并释放时,Click事件只能把此过程识别为一个单一的单击操作。鼠标事件能够区分各鼠标按钮及键盘的SHIFT、CTRL、ALT键的状态。例:鼠标位置编写窗体的MouseDown事件过程,用Print方法打印鼠标的位置。PrivateSubForm_MouseDown(Buttonasinteger,Shiftasinteger,Xasinteger,yasinteger)printx,yEndsub考点04:MouseUp事件当用户在某个对象上释放鼠标按键时发生。发生在MouseDown事件之后。格式如下:PrivateSubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub其中各参数的作用与MouseDown事件过程中一样。例:MouseUp事件P152编写窗体的MouseUp事件过程,用Move方法把控件移动到鼠标指向的位置处。PrivateSubForm_MouseUp(Buttonasinteger,Shiftasinteger,Xasinteger,yasinteger)command1.movex,yEndsub例:MouseDown和MouseUp事件例7-6利用鼠标指针在窗体上画图。P153DimpaintnowAsBooleanPrivateSubForm_Load()DrawWidth=2'ForeColor=RGB(0,0,255)EndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)paintnow=TrueEndSubPrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)IfpaintnowThenPSet(X,Y),vbRedEndIfEndSubPrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)paintnow=FalseEndSub考点05:MouseMove事件当用户在具体对象的边框内移动鼠标指针时触发该对象的MouseMove事件。格式如下:PrivateSubObject_MouseMove(Buttonasinteger,Shiftasinteger,xasinteger,yasinteger)……EndSub参数同MouseDown和MouseUp事件。注:为了避免混乱,最好不要在一个程序中为一个对象设计多个鼠标事件。例用MouseMove事件,在窗体中把控件“拖着”走。PrivateSubForm_MouseMove(Buttonasinteger,Shiftasinteger,Xasinteger,yasinteger)command1.movex,yEndsub考点06:MousePointer属性鼠标指针,又称鼠标光标,默认情况下是箭头的形状。当把MousePointer的属性值设为99,就可用MouseIcon属性为鼠标设置其他自定义的光标形状。此时,若未设MouseIcon属性,则还会默认使用箭头光标。考点07:设置鼠标光标形状的方法:1.属性窗口设置2.使用代码设置考点08:拖放与拖放有关的属性、方法和事件1、属性DragMode:设置拖动模式1-自动方式0-手动方式DragIcon:指定在拖放操作中指针显示的图标。也可运行时用LoadPicture函数来赋值。2、拖放事件(1)DragDrop事件(2)DragOver事件DragDrop事件在一个完整的拖放过程(即将一个源控件拖动到一个目标对象上,并释放鼠标按钮)完成后发生。格式如下:PrivateSub对象_DragDrop(SourceasControl,XasSingle,YasSingle)….Endsub说明:(1)其中,Source表示正在被拖动的源控件,可用TypeOf确定其类型。(2)X,Y返回鼠标指针当前的位置。DragOver事件用于图标的移动,当拖动对象越过一个控件时被触发。可使用此事件对鼠标指针在一个有效目标上的进入、离开或停顿等进行监控。功能:可用来确定在拖动开始后和控件放在目标上之前发生了些什么,格式如下:PrivateSub对象_DragOver(SourceasControl,XasSingle,YasSingle,StateasInteger)….EndsubDragOver事件说明:其中State是一个整数,表明一个控件在拖动过程中的转变状态。State为0,表示进入,即源控件正被向一个目标范围内拖动;State为1,表示离去,即源控件正被向一个目标范围外拖动;State为2,表示跨越,即源控件在目标范围内从一个位置移到了另一位置;注:其余参数的用法,参见DragDrop的事件过程。Drag方法该方法用来手工启动、结束或取消一个拖放过程。不管DragMode如何设置。格式:object.Dragaction说明:其中,action为整数,取0表示取消;取1表示拖放开始;取2表示结束拖放。例text1的MouseDown事件中,设置开始拖放。考点09:OLE拖放OLE拖放是指将数据从一个控件或应用程序移动到另一个控件或应用程序。考点11:手动拖放实现方法:(1)在MouseDown事件过程中使用Drag方法启动拖放操作;(2)在MouseUp事件过程中使用Drag方法结束或取消拖放操作;(3)如果Drag方法的action参数设为2,会触发DragDrop事件;(4)在DragDrop事件过程中,编写代码来控制拖放操作完成时会发生的情况,如用Move方法移动控件。例1以下说法正确的是()A.当焦点在某个控件身上时,按下一个字母键,就会执行该控件的KeyPress事件过程控件数组控件数组是由一组相同类型的控件组成,使用相同的名称,具有基本相同的属性,执行不同的功能。根据建立的顺序,系统给每个控件元素一个唯一的索引号(Index),即下标,下标从0开始。这些控件元素将使用相同的事件过程,在事件过程中使用Index区分各元素。控件数组的建立三种方法:(1)通过复制现有控件的方法创建(2)通过为多个同类控件设置相同的名称(3)使用Load语句动态加载PrivateSubForm_Load()fori=1to2LoadCommand1(i)Command1(i).Top=Command1(0).Top+i*(Command1(0).Height+100)Command1(i).visible=trueNextEndSub
本文标题:第7章 键盘和鼠标事件
链接地址:https://www.777doc.com/doc-5912460 .html