资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,单击此处编辑母版标题样式,第,10,章 键盘事件、鼠标事件、菜单,主要内容:,键盘与鼠标事件过程,KeyPress,事件,KeyDown,、,KeyUp,鼠标事件,鼠标光标的形状,菜单程序设计,VB,中的菜单,菜单编辑器,建立菜单,弹出式菜单,KeyPress,事件,1,、,Keypress,事件,:,此事件当用户按下和松开一个键盘上的键时发生。,格式:,Private Sub,控件名,_KeyPress(index As Integer,keyascii As Integer),说明:,可用于窗体、文本框、复选框、组合框、命令按钮、列表框、图片框、滚动条等具有焦点的控件。,Keyascii,参数的值是被按下的键的,ASCII,值。,它是以值为准,,比如:按下大键盘上的,1,和按下小键盘上的,1,都返回,1,的,Ascii,码,按下同一个键,但在大小写不同时,返回不同的值。,一个窗体仅在它没有可视的且可获得焦点的控件时才能接收该事件。但是当窗体的,KeyPreview,属性被设置为,True,时,窗体是可以接收该事件的,但不影响其它控件的,KeyPress,事件的接收。例如:窗体上有一个文本框,当,KeyPreview,属性被设置为,True,时,在文本框中输入数据,每一次按键,都会先触发窗体的,Keypress,事件,再触发控件的,Keypress,事件。,一个,KeyPress,事件可以引用任何可打印的键盘字符,可使用,Chr(KeyAscii),表达式将,keyascii,参数转变为一个字符。,使用这下面命令修改,KeyAscii,参数的值将改变所显示的字符:,KeyAscii=Asc(char),此事件不能识别下面的这些键:功能键(,F1-F12,)、编辑键,(,指,INSERT,键、,DELETE,键或,BACKSPACE,键,),、定位键以及任何键和键盘换档键的组合等。,KeyPress,事件,2,、举例:,例,1:,将输入到文本框中的字符转换为大写。,Private Sub Text1_KeyPress(KeyAscii As Integer),KeyAscii=Asc(UCase(Chr(KeyAscii),End Sub,KeyDown,、,KeyUp,事件,1,、,KeyDown,和,KeyUp,事件:,是当一个对象具有焦点时按下,(KeyDown),或松开,(KeyUp),一个键时发生的。,格式:,Private Sub,控件名,_KeyDown(index As Integer,keycode As Integer,shift As Integer),Private Sub,控件名,_KeyUp(index As Integer,keycode As Integer,shift As Integer),说明:,index As Integer,:当控件为控件数组时有此参数。表示被触发控件的索引号。,keycode As Integer,:是一个键代码。,它是一个,Ascii,码,,但是它是以键为准,一个键一个码,,例如:,A,和,a,是同一个值,以大写字母的,Ascii,值为准。,由于是以键为准,所以,大键盘和小键盘上的数字键并不是同一值,例如:大键盘的,1,和小键盘的,1,不同值。,对于有上下档的键,以下档键的值为准。,shift As Integer,:是在该事件发生时响应,SHIFT,CTRL,和,ALT,键的状态的一个整数。分别是,1,、,2,和,4,。例如,如果,CTRL,和,ALT,这两个键都被按下,则,shift,的值为,6,。,KeyDown,、,KeyUp,事件,例:,当按下“,”,键时,窗体上的滚动条的滚动块被移动。,Private Sub HScroll1_KeyDown(KeyCode As Integer,Shift As Integer),If KeyCode=188 And HScroll1.Value HScroll1.Min Then,HScroll1.Value=HScroll1.Value-HScroll1.LargeChange,End If,If KeyCode=190 And HScroll1.Value HScroll1.Max Then,HScroll1.Value=HScroll1.Value+HScroll1.LargeChange,End If,End Sub,在程序中,首先要测试按下的键是不是“,”,,并且要考虑是否滚动框处于最高或最低的位置,然后进行滚动条值属性的修改,在当前,Value,值上增加或者减少。,例:,当按下,Alt+P,显示照片,当放手时关闭显示。,Private Sub Form_Load(),Form1.KeyPreview=True,End Sub,Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer),If KeyCode=80 And Shift=4 Then,Image1.Visible=True,End If,End Sub,Private Sub Form_KeyUp(KeyCode As Integer,Shift As Integer),If KeyCode=80 And Shift=4 Then,Image1.Visible=False,End If,End Sub,鼠标事件,1,、鼠标的事件,按下鼠标事件:,格式:,Private Sub Form_MouseDown(Button As Integer,_ Shift As Integer,X As Single,Y As Single),松开鼠标事件:,格式:,Private Sub Form_MouseUp(Button As Integer,_ Shift As Integer,X As Single,Y As Single),移动鼠标事件:,格式:,Private Sub Form_MouseMove(Button As Integer,_ Shift As Integer,X As Single,Y As Single),上面的事件用于大多数控件,例如:窗体、复选框、命令按钮、单选按钮、框架、文本框、目录框、文件框、图像框、图片框、标签。,鼠标事件,2,、鼠标事件的参数:,Button:,事件发生时触发事件的鼠标键的值,此参数有,3,个值,:,常数(按钮)值 描述,vbLeftButton 1,左按钮被按下,vbRightButton 2,右按钮被按下,vbMiddleButton 4,中间按钮被按下,Shift:,鼠标触发事件的同时键盘上,Ctrl,、,Shift,、,Alt,键的状态。此参数的值和,Keydown,、,Keyup,事件中的,Shift,参数一样的解释,可以组合。,常数(换挡)值 描述,vbShiftMask 1 SHIFT,键被按下,vbCtrlMask 2 CTRL,键被按下,vbAltMask 4 ALT,键被按下,x,、,y:,鼠标触发事件时鼠标的坐标。,鼠标事件,3,、举例:,例,1,:在鼠标的箭头所指过的地方画上彩色小圆圈。,画以,x,y,为圆心画出指定色号的圆:,窗体名,.Circle(x,y),半径,色号,此程序应该完成的是:当鼠标移动时,使用,Circle,方法绘制圆。圆的圆心为鼠标所指位置。,Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single),Form1.Circle(X,Y),100,RGB(Int(Rnd*256),Int(Rnd*256),Int(Rnd*256),End Sub,VB,中的菜单,1,、菜单,分类:,下拉式菜单:典型的窗口式菜单,弹出式菜单:鼠标器右键单击后弹出的快捷菜单,菜单编辑器,1,、进入菜单编辑器,进入菜单编辑器有,4,种方法:,执行“工具”菜单中的“菜单编辑器”命令,使用热键,Ctrl+E,使用工具栏中的“菜单编辑器”按钮,在设计阶段,在窗体上单击鼠标右键,出现的快捷菜单上有“菜单编辑器”命令,菜单编辑器分为,3,个区:上半部分为数据区,中间为编辑区,下半部分为菜单项显示区。,建立菜单,菜单编辑器的用法:,1,、建立简单菜单:,界面设计,2,、编写菜单代码:,首先在窗体的设计状态下,单击要编写代码的菜单项。,弹出式菜单,除了下拉式菜单,,Windows,还经常使用弹出式菜单,几乎在每个对象上单击鼠标器右键都会出现弹出式的快捷菜单。,建立弹出式菜单的步骤:,使用菜单编辑器编辑菜单,在主菜单中的菜单名的可见属性设置为,false,。,在需要弹出弹出式菜单的事件过程中使用,PopupMenu,方法,一般来说,在程序中,通常把,PopupMenu,方法放在对象的,MouseDown,事件中。此事件可以根据事件参数区分鼠标左右键的按下,。,例:,菜单,
展开阅读全文