第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx

上传人:b****2 文档编号:4742722 上传时间:2023-05-04 格式:DOCX 页数:16 大小:23.80KB
下载 相关 举报
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第1页
第1页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第2页
第2页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第3页
第3页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第4页
第4页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第5页
第5页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第6页
第6页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第7页
第7页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第8页
第8页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第9页
第9页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第10页
第10页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第11页
第11页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第12页
第12页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第13页
第13页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第14页
第14页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第15页
第15页 / 共16页
第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx

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

第10章键盘与鼠标事件过程教案讲稿田Word文档下载推荐.docx

一、组织教学

二、新课导入

三、教学目标

四、教学内容

第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)

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

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

常用键盘码与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)

PrivateSubText1_KeyUp(KeyCodeAsInteger,ShiftAsInteger)

(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)

 程序运行后,把焦点移到文本框中,此时如果敲击“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)

  PrivateSubText1_KeyPress(KeyAsciiAsInteger)

  SaveAll=SaveAll+Chr(KeyAscii)

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

[2006年4月填空第9题]

  解析:

Text1_KeyPress过程将用户在文本框中所输入的内容保存到变量SaveAll中,本例输入“abcdefg”,则SaveAll=“abcdefg”;

Left(UCase(SaveAll),4)函数即为对“abcdefg”转换为大写后取前四个字母,即“ABCD”。

  答案:

ABCD

鼠标事件是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事件。

1.改变鼠标的形状

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

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

2.使用自定义鼠标形状

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

方法是:

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

3.MouseDown和MouseUp事件

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

(1)Button参数

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

可用来区分鼠标与键盘的组合,它的值等于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键

  PrivateSubLabellMouseUp(ButtonASInteger,ShiftAsInteger,XaSSing,YasSingle)

  IfButton=VbRightButtonThen

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

  EndIf

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

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

  PrivateSubLabellMouseUp(ButtonAsInteger,ShiftAsInteger,XasSingle)

  IfShift=2Then

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

  EndIf

例题见教材P262-264

例§

10.6

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

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

一般格式为:

对象.MousePointer=设置值

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

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

PrivateSubPicture1_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

Picture1.MousePointer=4

上述过程运行后,移动鼠标,当鼠标光标位于图片框内时,鼠标光标变为一个方块;

移出图片框后,鼠标光标变为默认形状(箭头)。

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”,则可激活窗体或控件的属性所设定的局部鼠标形状。

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

在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)

......

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

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2