第10章键盘与鼠标事件过程教案讲稿田.docx

上传人:b****2 文档编号:17668927 上传时间:2023-04-24 格式:DOCX 页数:16 大小:23.80KB
下载 相关 举报
第10章键盘与鼠标事件过程教案讲稿田.docx_第1页
第1页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田.docx_第2页
第2页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田.docx_第3页
第3页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田.docx_第4页
第4页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

第10章键盘与鼠标事件过程教案讲稿田.docx

《第10章键盘与鼠标事件过程教案讲稿田.docx》由会员分享,可在线阅读,更多相关《第10章键盘与鼠标事件过程教案讲稿田.docx(16页珍藏版)》请在冰豆网上搜索。

第10章键盘与鼠标事件过程教案讲稿田.docx

第10章键盘与鼠标事件过程教案讲稿田

课堂教学设课堂教学设计表

周次

第  周,第次课年月日

章节名称

第十章键盘与鼠标事件过程

通过本节内容的学习,达到以下教学目标:

1、掌握KeyPress事件的定义,参数的使用

2、KeyDown和KeyUp事件的定义,参数的使用

3、响应鼠标事件的定义

4、鼠标光标的形状定义

5、鼠标拖放事件的定义

学习内容和学习者分析

本次课初学者而言有一定的难度,需要多讲解实例使同学们加深印象,便于记忆和应用。

项目

内容

重点难点解决措施/提问结论

教学重点

本章内容对学生来讲全是必须掌握的新知识。

详讲多练。

教学难点

Keycode与KeyAscii的用法区别,组合键的定义

多分析实例。

课堂提问

具体情况具体对待,因学生而异。

教学方法

启发式教学,理论与实践相结合。

教学设备

多媒体教室

教学后记

一、组织教学

二、新课导入

三、教学目标

1、掌握KeyPress事件的定义,参数的使用

2、KeyDown和KeyUp事件的定义,参数的使用

3、响应鼠标事件的定义

4、鼠标光标的形状定义

5、鼠标拖放事件的定义

四、教学内容

第10章键盘与鼠标事件过程

§10.1KeyPress事件

§10.2KeyDown和KeyUp事件

§10.3响应鼠标事件

§10.4鼠标光标的形状

§10.5拖放

五、本次课小结

六、布置作业

教材后的习题全部完成。

[教学内容*讲稿部分]

第10章键盘与鼠标事件过程

驱动VB应用程序运行的主要动力是事件响应。

在VB响应的所有事件中,数目最多也最重要的是对键盘和鼠标的响应事件,因为键盘和鼠标是用户和应用程序交互的主要工具。

下面系统介绍鼠标和键盘常用事件的原理和使用技巧。

§10.1KeyUp和KeyDown

常用的键盘事件主要有KeyPress,KeyUp和KeyDown。

KeyPress事件:

用户按下某ASCII字符的对应键,因此它不是对所有的键盘码均响应,比如键盘上的删除键。

该事件可用于窗体、复选框、组合框、命令按钮、列表框、图片框、文本框、滚动条及与文件有关的控件。

当按下某个键时,所触发的是拥有输入焦点的那个控件的KeyPress事件。

1.焦点处理

窗体或控件(对象)的焦点是对象活动的标志,在Windows应用中,可以同时运行几个应用程序,但只有具有焦点的应用程序才有活动标题栏,才能接受用户输入。

在同一窗体中,在某一时刻,只有一个控件或窗体获得焦点。

也只有获得焦点的窗体或控件才能接受键盘事件。

所以在处理键盘事件前,应首先对焦点进行处理。

实现控件焦点的两种方法

(1)SetFocus方法

在程序运行时,通过鼠标选择操作或控件的SetFocus方法实现。

VB所提供的标准控件一般都有一个SetFocus方法。

通过该方法可以把焦点赋予指定的控件,是一种灵活的焦点控制方法。

比如希望在程序运行期的某个阶段,使某个控件获得焦点被激活,可使用以下代码:

控件名.SeFocus

(2)利用Tab控制键

VB所有可被设置焦点的控件均具有一个TabIndex属性。

默认情况下,在窗体上创建的第一个控件的TabIndex的值为0,第二个控件的TabIndex的值为1,以此类推。

可按预先设计好的顺序,改变控件的TabIndex的值,这样就可以在程序运行期间,通过Tab键使焦点按TabIndex的值从小到大的顺序进行切换。

如果不希望使某些控件获得焦点,就可以把该控件的TabStop属性值设置为False。

如果控件不可视(Visible=False)或不可用(Enabled=False),也不可能获得焦点了。

2.KeyPress事件的格式和应用

以Text1控件为例:

(1)用于单个控件

PrivatesubText1_KeyPress(KeyAsciiAsInteger)

EndSub

(2)用于控件数组

PrivatesubText1_KeyPress(IndexAsInteger)

EndSub

KeyPress事件发生于KeyDown和KeyUp之间,它只有一个KeyAscii参数,反映了用户通过键盘输入的字符的ASCII码。

按键

键码常

ASCII码

数字是否相等

BackSpace

vbKeyBack

8

Enter

vbKeyReturn

13

Space

vbKeySpace

33

Tab

vbKeyTab

9

Esc

vbKeyEscape

27

A~Z

vbKeyA~vbKeyZ

65~90

a~z

vbKeyA~vbKeyZ

97~122

.

vbKeyDecimal

46

0~9

vbKey0~vbKey9

48~57

Delete

vbKeyDelete

——

——

F1~!

F12

vbKeyF1~vbKeyF12

——

——

当需要处理标准ASCII字符时可使用这个事件,但要处理扩展字符键、组合键和定位键时,则只能使用KeyDown和KeyUp事件。

例如:

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

If(KeyAscii<48)Or(KeyAscii>57)Then

PrintChr(KeyAscii);

EndIf

EndSub

2.KeyPress事件的格式和应用

常用键盘码与ASCII码的对应关系

键码未必都有对应的ASCII码。

A和a的ASCII码不同,但它们在键盘上是一个按键,因此键码是一样的。

小节:

利用KeyPress事件可以对输入的值进行限制;

利用KeyPress事件可以捕捉击键动作;

在KeyPress过程中可以修改KeyAscii变量的值。

如果进行了修改,VisualBasic控件中输入修改后的字符,而不是用户输入的字符。

在默认情况下,控件的键盘事件优先于窗体的键盘事件。

因此在发生键盘事件时,总是先激活控件的键盘事件。

如果希望窗体先接收键盘事件,则必须把窗体的KeyPreview属性设置为True,否则不能激活窗体的键盘事件。

习题

1.键盘事件的执行顺序是()。

A.KeyPress,KeyDown,KeyUp

B.KeyDown,KeyPress,KeyUp

C.KeyUp,KeyDown,KeyPress

D.KeyUp,KeyPress,KeyDown

答案:

B

2.以下关于KeyPress事件过程参数KeyAscii的叙述中,正确的是()。

[2005年9月填空第29题]

  A.KeyAscii参数是所按键的ASCII码

  B.KeyAscii参数的数据类型为字符串

  C.KeyAscii参数可以省略

  D.KeyAscii参数是所按键上标注的字符

 解析:

KeyPress事件带有一个参数,这个参数有两种形式。

第一种形式是IndexAsInteger,只用于控件数组;第二种形式是KeyAsciiAsInteger,用于单个控件。

参数KeyAscii是一个预定义的变量,执行KeyPress事件过程时,KeyAscii是所按键的ASCII码,并且该参数不能省略。

默认情况下,控件的健键盘事件优先于窗体的键盘事件。

若使窗体优先接收键盘事件,需将其KeyPreview属性设为True。

如果希望无论何时按下某个键,都会同时执行同一操作,而不管此时到底哪个控件具有焦点的都可以使用窗体的键盘事件。

具体方法是:

首先将窗体的KeyPreview属性设置为True,然后再编写相应的键盘事件处理程序。

3.KeyPress事件的应用举例

§10.2KeyDown和KeyUp事件

KeyDown和KeyUp事件:

按下或释放键盘上的任意键时均会触发该事件,包括Delete删除键。

计算机键盘上的每一个键均有一个键码,称为键码。

KeyCode参数返回了键盘的键码值。

通过它判断用户按下哪个键。

既可以用数字也可以利用VB提供的键码常数进行判断处理,比如vbKeyF1(F1键)、vbKeyHome(Home键)、vbKeyA(A和a键)等。

例如:

IfKeyCode=vbKeyBackThen

IfKeyCode=vbKeyDeleteThen

与KeyPress事件不同,KeyPress并不反映键盘的直接状态,而KeyDown和KeyUp事件返回的是键盘的直接状态。

换言之,KeyDown和KeyUp事件返回的是“键”,而KeyPress事件返回的是“字符”的ASCII码。

例如,当按字母键“A”时,KeyDown所得到的KeyCode码(KeyDown事件的参数)与字母键“a”是相同的,而对KeyPress来说,所得到的ASCII码不一样。

1.KeyDown和KeyUp事件的格式

KeyDown和KeyUp事件的参数也有两种形式,其中IndexAsInteger只用于控件数组,而KeyCodeAsInteger,ShiftAsInteger用于单个控件。

PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

EndSub

PrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)

EndSub

(1)keycode参数

Keycode以“键”为准,不像keyascii以ASCII码为准。

例:

A和a的keycode值相同。

(2)Shift参数

通过该参数判断用户是否按下了Shift、Ctrl或Alt键。

例如:

IfShift=vbShiftMaskThen

IfShift=vbCtrlMaskThen

IfShift=vbAlttMaskThen

If(Shift=vbAltMask)And(KeyCode=VbKeyA)Then

转换键,指的是三个转换键的状态,包括Shift、Ctrl和Alt,这三个键分别以二进制形式表示,每个键有三位,Shift键为001,Ctrl键为010,Alt键为100;

教材例P255例§10.2、例§10.3

习题

 3.在窗体上画1个文本框,其名称为Text1,然后编写如下过程:

  PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

  PrintChr(KeyCode)

  EndSub

  PrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)

  PrintChr(KeyCode+2)

  EndSub

 程序运行后,把焦点移到文本框中,此时如果敲击“A”键,则输出结果为()

解析:

敲击“A”键的动作,首先是按下该键触发Text1_KeyDown事件,通过PrintChr(KeyCode)输出“A”;然后是松开被按下的“A”键,此时触发Text1_KeyUp事件,通过PrintChr(KeyCode+2)输出“C”。

  说明:

在键盘上按下一个键总是会触发KeyDown事件、KeyUp事件和KeyPress事件。

4.在窗体上画1个命令按钮和1个文本框,其名称分别为Command1和Text1,然后编写如下代码:

  DimSaveAllAsString

  PrivateSubCommand1_Click()

  Text1.Text=Left(UCase(SaveAll),4)

  EndSub

  PrivateSubText1_KeyPress(KeyAsciiAsInteger)

  SaveAll=SaveAll+Chr(KeyAscii)

  EndSub

  程序运行后,在文本框中输入abcdefg,单击命令按钮,则文本框中显示的内容是____。

[2006年4月填空第9题]

  解析:

Text1_KeyPress过程将用户在文本框中所输入的内容保存到变量SaveAll中,本例输入“abcdefg”,则SaveAll=“abcdefg”;Left(UCase(SaveAll),4)函数即为对“abcdefg”转换为大写后取前四个字母,即“ABCD”。

  答案:

ABCD

§10.3响应鼠标事件

鼠标事件是VisualBasic编程中最常用到的事件,多数控件都支持鼠标操作,因此对鼠标事件进行编程是非常重要的。

鼠标事件主要有以下几种:

  Click:

单击事件,即单击鼠标时发生的事件。

  DblClick:

双击事件,即双击鼠标时发生的事件。

  MouseDown:

鼠标按下时发生的事件。

  MouseUp:

鼠标抬起时发生的事件。

  MouseMove:

鼠标移动时发生的事件,对某控件的此事件进行编程,则当鼠标移过此控件时就会触发此事件,执行其相应代码。

鼠标事件的发生顺序是:

  

(1)首先发生的是MouseMove事件,当鼠标移动时,将会连续触发MoouseMove事件。

  

(2)当鼠标按下时发生MouseDown事件。

  (3)鼠标松开时发生MouseUp事件。

  (4)如果按住的是鼠标左键,则Click事件在MouseUp之后发生。

  双击鼠标时事件发生顺序是:

  

(1)当鼠标按下时发生MouseDown事件。

  

(2)鼠标松开时发生MouseUp事件。

  (3)单击鼠标发生Click事件。

  (4)双击鼠标发生DblClick事件。

(5)完成鼠标双击时发生MouseUp事件。

最常用到的就是Click事件和DblClcik事件,MouseMove和douseUp事件一般用在需要对鼠标进行处理的地方。

如:

对于最常见的命令按钮,通常情况下我们使用Click事件;而在进行画图的时候,例如画一条直线,必须先按住鼠标左键,然后拖动鼠标,再松开鼠标。

在此过程中,首先触发MouseDown事件,我们可以在此事件中记录鼠标的开始位置,再对MouseUp事件进行编程,以记录鼠标的结束位置;其中还要对MouseMove事件进行编程,以在移动过程中进行处理画图操作,而不是Click或DblClick事件。

§10.4鼠标光标的形状

1.改变鼠标的形状

每个窗体和控件都具有MousePointer属性,可通过它赋予它0~15间的不同值改变鼠标形状。

既可在设计阶段进行,也可以在程序代码中改变设置。

2.使用自定义鼠标形状

如果将MousePointer属性的值设置为99,则可以使用自定义鼠标形状。

方法是:

首先找一些光标(*.cur)或(*.ico)文件,然后通过MouseIcon属性完成设置。

3.MouseDown和MouseUp事件

这两个事件主要有四个参数:

(1)Button参数

可用来区分当前鼠标的左、中、右按键,0表示按下左键,1表示按下右键,2表示按下中间键。

(2)Shift参数

可用来区分鼠标与键盘的组合,它的值等于1,表示Shift键按下,2表示Ctrl键,4表示Alt键。

(3)x,y参数

返回鼠标指针当前的位置,计量单位由窗体的ScaleMode决定。

它们的值被限定在caleHeight,ScaleWidth,ScaleLeft和ScaleTop属性所建立的坐标系内。

4.MouseDown和MouseUp事件定义

MouseUp事件,其定义如下:

  PrivateSubLabell_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

  EndS

  在上面的参数中,ButtonAsInteger定义了参数Button,该参数是用于确定按下的是鼠标的左键,右键,还是中键,其取值如下表所示。

  常量数值说明

  VbleftButton1按下鼠标左键

  VbRightButton2按下鼠标右键

  VbMiddleButton4按下鼠标中键

  ShiftAsInteger定义整型参数Shift,该参数用于确定键盘上Shift键、Ctrl键、Alt键是否被按下,其取值如下表所示。

  常量数值 说明

VbShiftMask1按下Shift键

VbCtrlMask2按下Ctrl键

VbAltMask4按下Alt键

4.MouseDown和MouseUp事件定义

  PrivateSubLabellMouseUp(ButtonASInteger,ShiftAsInteger,XaSSing,YasSingle)

  IfButton=VbRightButtonThen

  Msgbox(“你按下去的是鼠标右键”)

  EndIf

  EndSub

  此段代码在鼠标抬起时执行,程序中用If条件判断语句来判断究竟是哪个键被按下。

  当Button=VbRightButton成立时,即鼠标右键被按下,这时可以执行相应的操作。

  PrivateSubLabellMouseUp(ButtonAsInteger,ShiftAsInteger,XasSingle)

  IfShift=2Then

  Msgbox(“单击鼠标时Ctrl键被按下”)

  EndIf

  EndSub

例题见教材P262-264

例§10.6

§10.4鼠标光标的形状

MousePointer属性可以通过代码设置,也可以通过属性窗口设置。

1.在程序代码中设置MousePointer属性

一般格式为:

对象.MousePointer=设置值

这里的“对象”可以是复选框、组合框、命令按钮、目录列表框、驱动器列表框、文件列表框、窗体、框架、图像、标签、列表框、图片框、滚动条、文本框、屏幕等。

例如,在窗体上建立一个图片框,然后编写如下的事件过程:

PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Picture1.MousePointer=4

EndSub

上述过程运行后,移动鼠标,当鼠标光标位于图片框内时,鼠标光标变为一个方块;移出图片框后,鼠标光标变为默认形状(箭头)。

2.在属性窗口中设置MousePointer属性

单击属性窗口中的MousePointer属性条,然后单击设置框右端向下的箭头,将下拉显示MousePointer的15个属性值。

如图§10.11所示。

单击某个属性值,即可把该值设置为当前活动对象的属性。

3.自定义鼠标光标

如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。

有以下两种方法:

(1)在属性窗口中定义,可首先选择所需要的对象,再把其MousePointer属性设置为“00-Custom”,然后设置MousePointer属性,把一个图标文件赋给该属性。

(2)用程序代码设置,则可先把MousePointer属性设置为99,然后再用LoadPicture函数把一个图标文件赋给MouseIcon属性。

例如:

Form1.MousePointer=99Form1.MouseIcon=LoadPicture("c:

\VisualBasic98\graphics\icons\arrows\point02.ico")

在Windows中,鼠标光标的应用有一些约定俗成的规则。

为了与Windows环境相适应,在应用程序中应遵守这些规则,主要有:

(1)表示用户当前可用的功能,如“I”形鼠标光标(属性值3)表示插入文本;十字形状(属性值2)表示画线或圆,或者表示选择可视对象以进行复制或存取。

(2)表示程序状态的用户可视线索,如沙漏鼠标(属性值11)表示程序忙,一段时间后将控制权交给用户。

(3)当坐标(X,Y)值为0时,改变鼠标光标形状。

注意,与屏幕对象(Screen)一起使用时,鼠标光标的形状在屏幕的任何位置都不会改变。

不论鼠标光标移到窗体还是控件内鼠标形状都不会改变,超出程序窗口后,鼠标形状将变为默认箭头。

如果设置“Screen.MousePointer=0”,则可激活窗体或控件的属性所设定的局部鼠标形状。

如果把MousePointer属性设置为99,则可通过MouseIcon属性定义自己的鼠标光标。

有以下两种方法:

(1)在属性窗口中定义,可首先选择所需要的对象,再把MousePointer属性设置为“00-Custom”,然后设置MousePointer属性,把一个图标文件赋给该属性。

(2)用程序代码设置,则可先把MousePointer属性设置为99,然后再用LoadPicture函数把一个图标文件赋给MouseIcon属性。

例如:

Form1.MousePointer=99Form1.MouseIcon=LoadPicture("c:

\VisualBasic98\graphics\icons\arrows\point02.ico")

§10.5拖放

在WINDOWS中,拖放是最常用的操作,VB在程序设计中能非常容易地实现这一操作,除了菜单、计时器和对话框外,其他控件在运行期间均可被拖放。

1、与拖放有关的属性:

 

(1)DragMode属性

  该属性用来设置自动或手动拖放模式,缺省值为0(手动方式)。

属性设为1时,自动执行拖放操作。

该属性即可以在属性窗口中设置,也可以在程序中设置。

一个对象的DragMode属性值为1时,该控件不再接收Click事件和MouseDown事件。

  

(2)DragIcon属性

  在拖动中,并非对象本身在移动,而是代表对象的图标。

即一旦拖动某个控件,该控件就变成一个图标,放下后再恢复原来控件。

DragIcon属性含有一个图标或图片的文件名,Picture1.DragIcon=load(“c:

\vb98\graphics\icons\computer\disk06.ico)

当拖动Picture1时,Picture1即变成由disk06.ico所代表的图标。

2、与拖放有关的事件

DragDrop:

把控件拖动,如松开鼠标按钮,则产生DragDrop事件,事件过程格式如下:

Sub对象名_DragOver(SourceAsControl,XAsSingle,YAssingle,StateAsInteger)

......

EndSub

该对象含有三个参数,其中Source为一个对象变量,类型为Control.该参数含有被托动对象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1