《vb键盘与鼠标事件过程.ppt》由会员分享,可在线阅读,更多相关《vb键盘与鼠标事件过程.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1111章章 键盘与鼠标事件过程键盘与鼠标事件过程第第1111章章 键盘与鼠标事件过程键盘与鼠标事件过程 除除了了响响应应鼠鼠标标的的单单击击(Click)或或双双击击(DblClick)事事件件以以外外,Visual Basic应应用用程程序序还还能能响响应应多多种种鼠鼠标标事事件件和和键键盘盘事事件件。例例如如,窗窗体体、图图片片框框与与图图象象控控件件都都能能检检测测鼠鼠标标指指针针的的位位置置,并并可可判判定定其其左左、右右键键是是否否已已按按下下,还还能能响响应应鼠鼠标标按按钮钮与与Shift、Ctrl或或Alt键键的的各各种种组组合合。利利用用键键盘盘事事件件可可以以编程响应多
2、种键盘操作,也可以解释、处理编程响应多种键盘操作,也可以解释、处理ASCII字符。字符。v11.1 键盘事件键盘事件 键键盘盘事事件件是是指指能能够够响响应应各各种种按按键键操操作作的的KeyDown、KeyUp及及KeyPress事事件件,可可以以把把编编写写响响应应击击键键事事件件的的应应用用程程序序看看作作是是编编写写键键盘盘处处理理器器。键键盘盘处处理理器器可可在在控控件件级级和和窗窗体体级级这这两两个个层层次次上上工工作作。有有了了控控件件级级(低低级级)处处理理器器就就可可对对特特定定控控件件编编程程。例例如如,可可能能希希望望将将Textbox这这个个控控件件中中的的输输入入文文
3、本本都都转转换换成成大大写写字字符符。而而有有了了窗窗体体级级处处理理器器就就可可使使窗窗体体首首先先响响应应击击键键事事件件,于于是是就就可可将将焦焦点点转转换换成成窗窗体体的的控控件并重复或启动事件。件并重复或启动事件。11.1.1 KeyPress11.1.1 KeyPress事件事件 KeyPress事事件件当当用用户户按按下下和和松松开开一一个个ASCII字字符符键键时时发发生生。该该事事件件被被触触发发时时,被被按按键键的的ASCII码码将将自自动动传传递递给给事事件件过过程程的的KeyAscii参参数数。在在程程序序中中,通通过过访访问问该该参参数数,即即可可获获知知用用户户按按
4、下下了了哪哪一一个个键键,并并可可识识别别字字母母的的大大小小写写。其其语法格式为:语法格式为:Private Sub 对象名对象名_KeyPress(keyascii As Integer)其其中中参参数数keyascii是是被被按按下下字字符符键键的的标标准准ASCII码码。对对它它进进行行改改变变可可给给对对象象发发送送一一个个不不同同的的字字符符。将将keyascii改改变变为为0时可取消击键,这样一来对象便接收不到字符。时可取消击键,这样一来对象便接收不到字符。KeyPress事事件件可可以以引引用用任任何何可可打打印印的的键键盘盘字字符符、来来自自标标准准字字母母表表的的字字符符或
5、或少少数数几几个个特特殊殊字字符符之之一一的的字字符符与与Ctrl键的组合、键的组合、Enter或或Backspace键。键。【例【例11-1】可以显示按键及其】可以显示按键及其ASCII码的程序(如图码的程序(如图11-1)。)。图图11-1 KeyPress事件接受的按键事件接受的按键 程序的代码部分:程序的代码部分:复选框的复选框的Click事件代码:事件代码:Private Sub Check1_Click()Text1.SetFocusEnd Sub 文本(输入)框文本(输入)框Text1的的KeyPress事件代码:事件代码:Private Sub Text1_KeyPress(K
6、eyAscii As Integer)Text2.Text=KeyAscii Select Case KeyAscii Case 0 To 7,9 To 12,14 To 26,28 To 31 Text1.Text=Text3.Text=Ctrl+&Chr(64+KeyAscii)Case 8 Text3.Text=Ctrl+&Chr(64+KeyAscii)&或或 退格键退格键 Case 13 Text1.Text=Text3.Text=Ctrl+&Chr(64+KeyAscii)&或或 回车键回车键 Case 27 Text1.Text=Text3.Text=Ctrl+&Chr(64+K
7、eyAscii)&或或 Esc键键 Case Else Text3.Text=Chr(KeyAscii)End Select If Check1.Value=0 Then KeyAscii=0 End IfEnd Sub11.1.2 KeyDown11.1.2 KeyDown和和KeyUpKeyUp事件事件 KeyDown和和KeyUp事事件件是是当当一一个个对对象象具具有有焦焦点点时时按按下下或或松松开开一一个个键键时时发发生生的的。当当控控制制焦焦点点位位于于某某对对象象上上时时,按按下下键键盘盘中中的的任任意意一一键键,则则会会在在该该对对象象上上触触发发产产生生KeyDown事事件件,
8、当当释释放放该该键键时时,将将触触发发产产生生KeyUp事事件件,之之后后产产生生KeyPress事件。其语法格式为:事件。其语法格式为:Private Sub 对象名对象名_KeyDown(KeyCode As Integer,Shift As Integer)Private Sub 对象名对象名_KeyUp(KeyCode As Integer,Shift As Integer)其其中中参参数数KeyCode参参数数项项用用于于返返回回被被按按键键的的扫扫描描代代码码。由由于于扫扫描描码码主主要要反反映映物物理理键键位位,因因此此通通过过该该参参数数不不能能区区分分字母大小写。字母大小写。
9、11.1.2 KeyDown11.1.2 KeyDown和和KeyUpKeyUp事件事件 shift参参数数项项返返回回一一个个整整数数,该该整整数数相相应应于于Shift、Ctrl和和Alt键键的的状状态态。shift参参数数等等于于1、2和和4分分别别表表示示Shift、Ctrl和和Alt键键被被按按下下,而而三三数数的的部部分分和和表表示示三三个个按按钮钮部部分分地地被被同同时时按按下下。因因此此,可可结结合合该该参参数数项来判断输入字母的大小写。项来判断输入字母的大小写。应应当当使使用用KeyDown和和KeyUp事事件件过过程程来来处处理理任任何何不不被被KeyPress识识别别的的
10、击击键键,诸诸如如:功功能能键键、编编辑辑键键、定定位位键键以以及及任任何何这这些些键键和和键键盘盘换换档档键键的的组组合合等等。与与KeyDown和和KeyUp事事件件不不同同的的是是,KeyPress不不显显示示键键盘盘的的物物理理状状态态,而只是传递一个字符。而只是传递一个字符。【例【例11-2】可以测试功能键与控制键的程序(如图】可以测试功能键与控制键的程序(如图11-2)。)。程序的代码部分:程序的代码部分:文本(输入)框文本(输入)框Text1的的Keydown事件代码:事件代码:Private Sub Text1_Keydown(KeyCode As Integer,Shift
11、As Integer)Text2.Text=Text2.Text&Str(KeyCode)&,If KeyCode 111 And KeyCode 0,1,0)Check2.Value=IIf(Shift And vbCtrlMask)0,1,0)Check3.Value=IIf(Shift And vbAltMask)0,1,0)End Sub 命令按钮(清除)命令按钮(清除)Command1 的的 Click 事件代码:事件代码:Private Sub Command1_Click()Text1.Text=Text2.Text=Text1.SetFocusEnd Sub图图11-2 测试功
12、能键与控制键测试功能键与控制键11.1.3 11.1.3 使用使用KeyPreviewKeyPreview属性属性 KeyPreview 属属性性返返回回或或设设置置一一个个值值,以以决决定定是是否否在在控控件件的的键键盘盘事事件件(KeyDown、KeyUp 和和 KeyPress)之之前前激激活活窗体的键盘事件。其语法为:窗体的键盘事件。其语法为:对象名对象名.KeyPreview=boolean 其其中中,Boolean是是布布尔尔表表达达式式,指指定定如如何何接接收收事事件件:当当取取值值为为False(缺缺省省值值)时时,活活动动控控件件接接收收键键盘盘事事件件,而而窗窗体体不不接接
13、收收;当当取取值值为为True时时,窗窗体体先先接接收收键键盘盘事事件件,然然后后是是活动控件接收事件。活动控件接收事件。v11.2 鼠标事件鼠标事件 在在前前面面的的例例子子中中曾曾多多次次使使用用鼠鼠标标事事件件,即即单单击击(Click)事事件件和和双双击击(DblClick)事事件件,这这些些事事件件是是通通过过快快速速按按下下并并松松开开鼠鼠标标键键而而产产生生的的。除除此此之之外外,VB还还可可以以通通过过MouseDown、MouseUp、MouseMove事事件件使使应应用用程程序序对对鼠标位置及状态的变化作出响应(其中不包括拖放事件。鼠标位置及状态的变化作出响应(其中不包括拖
14、放事件。其其实实,Click事事件件是是由由MouseDown和和MouseUp组组成成,因因此此MouseDown和和MouseUp是更基本的鼠标事件。是更基本的鼠标事件。11.2.1 MouseDown11.2.1 MouseDown和和MouseUpMouseUp事件事件 MouseDown和和MouseUp 事事件件当当按按下下(MouseDown)或或者者释放释放(MouseUp)鼠标按钮时发生。其语法为:鼠标按钮时发生。其语法为:Private Sub 对对象象名名_MouseDown(button As Integer,shift As Integer,x As Single,y
15、 As Single)Private Sub 对对象象名名_MouseUp(button As Integer,shift As Integer,x As Single,y As Single)其中:参数其中:参数button返返回回一一个个整整数数,button参参数数的的值值分分别别等等于于1,2,和和4时时,相相应应于于左左按按钮钮、右右按按钮钮以以及及中中间间按按钮钮的动作。注意只能有一个按钮引起事件。的动作。注意只能有一个按钮引起事件。参参数数shift返返回回一一个个整整数数,在在button参参数数指指定定的的按按钮钮被被按按下下或或者者被被释释放放的的情情况况下下,该该整整数数
16、相相应应于于Shift、Ctrl和和Alt键键的状态。的状态。11.2.1 MouseDown11.2.1 MouseDown和和MouseUpMouseUp事件事件 MouseDown和和MouseUp 事事件件当当按按下下(MouseDown)或或者者释放释放(MouseUp)鼠标按钮时发生。其语法为:鼠标按钮时发生。其语法为:Private Sub 对对象象名名_MouseDown(button As Integer,shift As Integer,x As Single,y As Single)Private Sub 对对象象名名_MouseUp(button As Integer,
17、shift As Integer,x As Single,y As Single)参参数数x,y返返回回一一个个指指定定鼠鼠标标指指针针当当前前位位置置的的数数。x和和y的的值值所所 表表 示示 的的 总总 是是 通通 过过 该该 对对 象象 ScaleHeight,ScaleWidth,ScaleLeft,和,和ScaleTop属性所建立的坐标系统的方式。属性所建立的坐标系统的方式。11.2.2 MouseMove11.2.2 MouseMove事件事件 MouseMove 事件在移动鼠标时发生。其语法格式为:事件在移动鼠标时发生。其语法格式为:Private Sub 对对象象名名_Mous
18、eMove(button As Integer,shift As Integer,x As Single,y As Single)其中参数描述同其中参数描述同MouseDown和和MouseUp事件。事件。MouseMove事事件件伴伴随随鼠鼠标标指指针针在在对对象象间间移移动动时时连连续续不不断断地地产产生生。除除非非有有另另一一个个对对象象捕捕获获了了鼠鼠标标,否否则则,当当鼠鼠标标位位置在对象的边界范围内时该对象就能接收置在对象的边界范围内时该对象就能接收MouseMove事件。事件。11.2.3 11.2.3 自定义鼠标指针自定义鼠标指针 在在VB中中,可可以以通通过过属属性性设设置置
19、来来改改变变鼠鼠标标指指针针的的形形状状。鼠鼠标标指指针针的的改改变变可可以以告告知知用用户户诸诸多多信信息息,例例如如,正正在在进进行行长长时时间间的的后后台台任任务务,调调整整某某个个控控件件或或窗窗口口的的大大小小,某某控控件件不不支持拖放操作等等。支持拖放操作等等。1.MousePointer属性的设置属性的设置 MousePointer属属性性是是一一个个整整数数,取取值值为为015,可可用用MousePointer属属性性在在16个个预预定定义义指指针针中中任任选选一一个个。这这些些指指针针表表示示各各种种系系统统事事件件和和过过程程,表表11-1描描述述了了各各种种指指针针及及其
20、其在应用程序中的可能作用。在应用程序中的可能作用。表表11-1 MousePointer属性值的描述属性值的描述指针形状值常数描述0vbDefault(缺省值)形状由对象决定。1vbArrow箭头。2vbCrosshair十字线(crosshair指针)。3vbIbeamI型4vbIconPointer图标(矩形内的小矩形)。5vbSizePointer尺寸线(指向东、南、西和北四方向的箭头)。6vbSizeNESW右上-左下尺寸线(指向东北和西南方向的双箭头)。7vbSizeNS垂-直尺寸线(指向南和北的双箭头)。8vbSizeNWSE左上-右下尺寸线(指向东南和西北方向的双箭头)。9vbS
21、izeWE水-平尺寸线(指向东和西两个方向的双箭头)。10vbUpArrow向上的箭头。11vbHourglass沙漏(表示等待状态)。12vbNoDrop不允许放下。13vbArrowHourglass箭头和沙漏。14vbArrowQuestion箭头和问号。15vbSizeAll四向尺寸线。99vbCustom通过MouseIcon属性所指定的自定义图标。2.图标和光标图标和光标 用用自自定定义义图图标标或或光光标标可可进进一一步步改改变变应应用用程程序序的的外外观观和和功功能能。可可以以设设置置鼠鼠标标指指针针来来显显示示自自定定义义图图标标或或光光标标,它它们们可可以表示鼠标的状态及当
22、前的输入位置。以表示鼠标的状态及当前的输入位置。为为使使用用自自定定义义图图标标或或光光标标,应应设设置置MousePointer和和MouseIcon属属性性。其其中中MouseIcon属属性性设设置置为为自自定定义义图图标标或或光标文件,而光标文件,而MousePointer 属性则设置成属性则设置成99-Custom。在在将将MousePointer属属性性设设置置成成99-Custom时时,如如果果未未在在MouseIcon上上加加载载图图标标,则则使使用用缺缺省省的的鼠鼠标标指指针针。同同样样,如如果果未未将将MousePointer属属性性设设置置成成99-Custom,则则将将忽
23、忽略略 MouseIcon的设置。的设置。11.2.4 11.2.4 使用鼠标事件使用鼠标事件【例【例11-3】使用鼠标事件设计的画图小程序,如图】使用鼠标事件设计的画图小程序,如图11-3所示。所示。图图11-3 小画板程序小画板程序 编写窗体编写窗体Form1的事件代码:的事件代码:装入(装入(Load)事件:)事件:Private Sub Form_Load()Me.AutoRedraw=True Me.Caption=小画板小画板-&未命名未命名End Sub 鼠标按下(鼠标按下(MouseDown)事件:)事件:Private Sub Form_MouseDown(Button As
24、 Integer,Shift As Integer,X As Single,Y As Single)If Button=1 Then CurrentX=X:CurrentY=Y End IfEnd Sub 鼠标移动(鼠标移动(MouseMove)事件:)事件:Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=1 Then Me.Line(CurrentX,CurrentY)-(X,Y)CurrentX=X:CurrentY=Y End IfEnd Sub
25、 编写菜单的事件代码:编写菜单的事件代码:文件菜单的单击(文件菜单的单击(Click)事件:)事件:Private Sub(Index As Integer)Select Case Index Case 0 Me.Picture=LoadPicture()Me.Caption=小画板小画板-&未命名未命名 Case 1 CommonDialog1.ShowOpen Me.Picture=LoadPicture(CommonDialog1.)Me.Caption=小画板小画板-&CommonDialog1.Case 2 CommonDialog1.=Mid(Me.Caption,5)Common
26、Dialog1.ShowSave SavePicture Me.Image,CommonDialog1.Case 3 End End SelectEnd Sub 画笔菜单项的单击(画笔菜单项的单击(Click)事件:)事件:Private Sub pencil_Click()If pencil.Caption=画笔画笔 Then pencil.Caption=擦除擦除 Me.DrawMode=16 Me.DrawWidth=8 a=c:Program FilesMicrosoft Visual StudioCommonGraphicsCursorsh_nw.cur Else pencil.Caption=画笔画笔 Me.DrawMode=1 Me.DrawWidth=1 a=c:Program FilesMicrosoft Visual StudioCommonGraphicsCursorsPencil.cur End If Me.MouseIcon=LoadPicture(a)End Sub