VB学习资料第十二章 响应鼠标和键盘事件.docx

上传人:b****1 文档编号:14109258 上传时间:2023-06-20 格式:DOCX 页数:9 大小:38.23KB
下载 相关 举报
VB学习资料第十二章 响应鼠标和键盘事件.docx_第1页
第1页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第2页
第2页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第3页
第3页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第4页
第4页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第5页
第5页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第6页
第6页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第7页
第7页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第8页
第8页 / 共9页
VB学习资料第十二章 响应鼠标和键盘事件.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VB学习资料第十二章 响应鼠标和键盘事件.docx

《VB学习资料第十二章 响应鼠标和键盘事件.docx》由会员分享,可在线阅读,更多相关《VB学习资料第十二章 响应鼠标和键盘事件.docx(9页珍藏版)》请在冰点文库上搜索。

VB学习资料第十二章 响应鼠标和键盘事件.docx

VB学习资料第十二章响应鼠标和键盘事件

12.1.1鼠标事件过程

MouseMove、MouseDown、MouseUp三个事件的过程的语法格式如下:

SubObject_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)

SubObject_MouseDown(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)

SubObject_MouseUp(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)

其中:

◆Object是可选的一个对象表达式,可以是窗体对象和大多数可视控件。

◆Button参数是表示按下或松开鼠标哪个按钮。

图12-1表示了参数Button的值。

图12-1参数Button值

参数Button的值对应的功能如表12-1所示。

表12-1参数Button的说明

参数(Button)

说明

 vbLeftButton

1

左按钮被按下

 vbRightButton

2

右按钮被按下

 vbMiddleButton

4

中间按钮被按下

◆通过Shift参数表示在Button参数指定的按钮被按下或者被松开的情况下键盘的Shift、Ctrl和Alt键的状态,图12-2表示了Shift参数的值,Ctrl、Shift、Alt三键组合使用情况如表12-2所示。

图12-2Shift参数的值

表12-2Shift参数的值

二进制值

十进制值

系统常数

意义

000

0

未按下任何键

011

3

vbShiftMask+vbCtrlMask

同时按下Shift

和Ctrl键

101

5

vbShiftMask+vbAltlMask

同时按下Shift

和Alt键

110

6

vbCtrlMask+vbAltMask

同时按下Ctrl

和Alt键

111

7

vbCtrlMask+vbAltMask+vbShiftMask

同时按下Ctrl、Alt

和Shift键

◆参数X、Y

X,Y鼠标指针的位置,通过X和Y参数返回一个指定鼠标指针当前位置的数,X和Y的值是使用该对象的坐标系统表示鼠标指针当前位置。

注意:

鼠标事件被用来识别和响应各种鼠标状态,并把这些状态看作独立的事件,在按下鼠标按钮并释放时,Click事件只能把此过程识别为一个单一的单击操作。

鼠标事件能够区分各鼠标按钮及键盘的SHIFT、CTRL、ALT键的状态。

【例】使用MouseDown和MouseMove事件,编写一个在窗体上用鼠标绘图的简单程序(随着鼠标的移动,画线越来越宽)。

OptionExplicit

DimsngDrawWidthAsSingle'模块级变量,保存线条宽度

PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,_

XAsSingle,YAsSingle)

IfButton=1Then'如果按下左键

CurrentX=X:

CurrentY=Y'设置画线起点

sngDrawWidth=1'设置线条初始宽度

DrawWidth=sngDrawWidth

EndIf

EndSub

PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)

DimlngDrawColorAsLong

IfButton=1Then'使用不同颜色

IfShift=1Then

lngDrawColor=RGB(255,0,0)

ElseIfShift=2Then

lngDrawColor=vbGreen

ElseIfShift=4Then

lngDrawColor=&HFF0000

EndIf

sngDrawWidth=sngDrawWidth+0.1'加宽线条

DrawWidth=sngDrawWidth

Line-(X,Y),lngDrawColor'画线

EndIf

EndSub

12.1.2拖放

在运行时拖动控件,通常情况下并不能自动改变控件位置,这就必须使用VisualBasic的拖放功能,通过编程,才能实现在运行时拖动控件并改变其位置。

把按下鼠标按钮并移动控件的操作称为拖动,把释放按钮的操作称为放下。

一、DragMode属性

功能:

返回或设置一个值,确定在拖放操作中所用的是手动还是自动拖动方式。

格式:

object.DragMode[=number]

其中:

object:

为支持DragMode属性的一个对象。

Number:

取0时,启动人工拖放模式;取1时,启动自动拖放模式。

注意:

当DragMode属性设置为1(自动方式)时,控件不能正常响应鼠标事件。

当拖动控件时,该控件不能识别用户发出的其它鼠标或键盘事件(KeyDown、KeyPress或KeyUp,MouseDown、MouseMove或MouseUp)。

二、DragIcon属性

功能:

返回或设置图标,它将在拖放操作中作为指针显示。

格式:

object.DragIcon[=icon]

其中:

object:

为支持DragMode属性的一个对象。

Icon:

为任何返回图标的程序引用,例如引用窗体图标(Form1.Icon),引用另外控件的DragIcon属性(Text1.DragIcon),或是LoadPictur函数。

三、DragDrop事件

在一个完整的拖放动作(即将一个控件拖动到一个对象上,并释放鼠标按钮)完成,或使用Drag方法,并将其action参数被设置为2(Drop)时,该事件发生。

说明:

◆DragDrop事件过程用来控制在一个拖动操作完成时将会发生的情况。

例如,可将源控件移到一个新的位置或将一个文件从一个位置复制到另一个位置。

注意:

应使用DragMode属性和Drag方法来指定开始拖动的方法。

一旦开始拖动,可使用DragOver事件过程来处理位于DragDrop事件前面的事件。

【例】在窗体上放置一个标签框(lblSource),两个文本框,一个作为源文本框(txtSource),一个作为目标文本框(txtTarget),实现从标签框和源文本框到目标文本框的拖放功能。

程序界面如图12-7所示。

图12-7

程序代码如下:

PrivateSublblSource_Click()

lblSource.Drag

EndSub

PrivateSubtxtSource_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfShift=2Then

txtSource.Drag1

EndIf

EndSub

PrivateSubtxtTarget_DragDrop(SourceAsControl,XAsSingle,YAsSingle)

IfTypeOfSourceIsTextBoxThen

txtTarget.Text=Source.Text

Source.Text=""

Else

txtTarget.Text=Source.Caption

Source.Caption=""

EndIf

EndSub

程序运行后,当用鼠标左键按住lblSource,即可将lblSource中的内容移动到txtTarget中;当按住Ctrl键并用鼠标左键按住txtSource,即可将txtSource中的内容移动到txtTarget中。

12.2.1KeyPress事件

在VisualBasic中,提供KeyPress、KeyDown、KeyUp三种键盘事件,窗体和接受键盘输入的控件都识别这三种事件。

◆KeyPress:

按下对应某ASCII字符的键。

◆KeyDown:

按下键盘的任意键。

◆KeyUp:

释放键盘的任意键只有获得焦点的对象才能够接受键盘事件。

在按下与ASCII字符对应的键时将触发KeyPress事件。

KeyPress事件过程的语法格式是:

SubObject_KeyPress(KeyAsciiAsInteger)

其中:

Object是指窗体或控件对象名,KeyAscii参数返回对应于ASCII字符代码的整型数值。

【例】如果希望将文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

KeyAscii=Asc(Ucase(Chr(KeyAscii)))

EndSub

【例】通过编程序,在一个文本框(Text1)中限定只能输入数字、小数点,只能响应BackSpace键及回车键。

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

SelectCaseKeyAscii

Case48to57,46,8,13

CaseElse

KeyAscii=0

EndSelect

EndSub

通过此代码使KeyPress事件只识别Enter、Tab和Backspace键。

不能能够检测其它功能键、编辑键和定位键。

12.2.2KeyDown和KeyUP事件

当一个对象具有焦点时按下(KeyDown)或松开(KeyUp)一个键时发生。

它们报告键盘本身准确的物理状态:

按下键(KeyDown)及松开键(KeyUp)。

KeyDown和KeyUp事件能够检测其它功能键、编辑键和定位键。

KeyUp和KeyDown事件过程的语法格式如下:

SubObject_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

SubObject_KeyUp(KeyCodeAsInteger,ShiftAsInteger)

说明:

◆Keycode参数

Keycode参数表示按下的物理键。

上档键字符和下档键字符也是使用同一键,它们的Keycode值相同。

下表12-2对Keycode值和KeyAscii值进行了比较。

表12-2

键(字符)

Keycode值

KeyAscii值

 “A”

&H41

&H41

 “a”

&H41

&H61

 “!

&H31

&H21

 “1”(大键盘上)

&H31

&H31

 “1”(数字键盘上)

&H61

&H31

 HOME键

&H24

&H24

 F10键

&H79

Keycode参数通过ASCII值或键代码常数来识别键。

字母键的键代码与此字母的大写字符的ASCII值相同。

所以"A"和"a"的Keycode都是由Asc("A")返回的数值。

在下例中用KeyDown事件判断是否按下了"A"键:

PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

IfKeyCode=vbKeyAThen

MsgBox"YoupressedtheAkey.“

Endif

EndSub

◆shift参数

shift表示是在该事件发生时响应SHIFT、CTRL和ALT键的状态,它是一个整数。

其含义与上一节中MouseMove、MouseDown、MouseUp事件中的shift参数完全相同。

【例】用Shift参数判断是否按下了字母的大写形式。

PrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)

IfKeyCode=vbKeyAAndShift=1Then

MsgBox"YoupressedtheuppercaseAkey."

Endif

EndSub

第十二章响应鼠标和键盘事件

◆本章主要教学内容总结

通过本章的学习,使学生理解了鼠标、键盘事件的触发机制。

正确区分了KeyDow事件和KeyPress事件。

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

当前位置:首页 > 法律文书 > 调解书

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

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