首页 主任信箱 联系我们  
   VB教学课件
 

第 十八 讲

一鼠标器

MouseDown、MouseUp和MouseMove事件

1.定义:

鼠标事件是由用户操作鼠标而引发的能被VB中的各种对象识别的事件。

2.触发条件:

将鼠标置于对象上时,鼠标任一键被按下时,则触发鼠标按下事件Mousedown;;当释放鼠标按键时,则触发产生鼠标的释放事件Mouseup。鼠标指针在对象区域内移动时产生Mousemove事件。

3.事件过程格式:

Private sub 对象名_Mousedown(Button as integer,Shift as integer,X as single,Y as single)

Private sub 对象名_Mouseup(Button as integer,Shift as integer,X as single,Y as single)

Private sub 对象名_Mousemove(Button as integer,Shift as integer,X as single,Y as single)

说明:

(1)Button被用户按下或释放的鼠标器按钮的值。

(2)Shift 是否按下 Shift 、 Ctrl 、 Alt 等三个键的状态值。

(3)X和Y当前鼠标的位置,采用ScaleMode属性指定的位置。

(4)详细的状态值如下:

Shift值键盘按键的状态

  • Shift 键被按下
  • Ctrl 键被按下
  • Alt 键被按下

Button值鼠标按键的状态

  • 鼠标的左键被按下
  • 鼠标的右键被按下

4鼠标的中间键被按下

例1 显示鼠标器指针所指定的位置。

用两个文本框显示鼠标器指针所指的位置,它们的名称分别为txtX和txtY。

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

txtX.Text = X

txtY.Text = Y

End Sub

例2 设计一个最简单的画图程序。

程序运行时,按下鼠标右键画圆,按下鼠标左键移动时画线。

Dim drawstate As Boolean

Dim prex As Single

Dim prey As Single

Private Sub Form_Load()

'将drawstate初始化为False

drawstate = False

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

'当鼠标左键被按下时,把drawstate设为True,表示开始画线

drawstate = True '设置画图状态

MousePointer = vbCustom '鼠标指针使用用户指定的样式

'装入图标IE_B.ico作为鼠标指针

MouseIcon = LoadPicture("IE_B.ico")

'Prex和Prey保存线条的起点

prex = X

prey = Y

End If

If Button = 2 Then

'当鼠标右键被按下时,画一个直径为280的圆

Circle (X, Y), 280

End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'当鼠标移动时,如果处于画线状态,则用Line方法在(prex,prey)与(x,y)之间画一条直线'

If drawstate = True Then

Line (prex, prey)-(X, Y)

prex = X

prey = Y

End If

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 1 Then

MousePointer = vbDefault '鼠标指针恢复原样

drawstate = False '当鼠标左键被释放时,解除画线状态

End If

End Sub

例3 鼠标移动实例

二 键盘

(一) KeyDown事件、KeyUp事件

1.定义:当一个对象具有焦点,用户按下或松开一个键盘时发生的事件。

2.语法:

Sub object_KeyDown(Keycode As Integer,shift As integer)
Sub object_KeyUp(Keycode As Integer,shift As integer)
说明:

keycode表示一个键的代码;而Shift则表示在该事件发生时反应SHIFT、CTRL和ALT键状态的一个整数。

shift参数的设置值如下表:

常数和数值

功 能

vbShiftMask=1

SHIFT键的位屏蔽

vbCtrlMask

CTRL键的位屏蔽

vbAltMask

ALT键的位屏蔽

 shift参数是一个位域,它用最少的位反应SHIFT(0位)、CTRL(1位)和ALT(2位)的状态,我们可以通过对某些位的设置来指明有哪些键被按下,例如:同时按下SHIFT和CTRL键,则shift的值为3。
KeyDown和KeyUp事件提供了最低级的键盘响应,它可以检测KeyPress事件无法检测到的下列击键。 

·SHIFT、CTRL和ALT键的组合;
·箭头键、PAGEUP和PAGEDOWN键;
·区分数值小键盘的数字键与打字大键盘的数值键盘等。
附:键码常数

常数和数值

描 述

vbKeyLButton=1

鼠标左键

vbKeyRButton=2

鼠标右键

vbKeyCancel=3

CANCEL 键

vbKeyMButton=4

鼠标中键

vbKeyBack=8

BACKSPACE 键

vbKeyTab=9

TAB 键

vbKeyClear=12

CLEAR 键

vbKeyReturn=13

ENTER 键

vbKeyShift=16

SHIFT 键

vbKeyControl=17

CTRL 键

vbKeyMenu=18

菜单键

vbKeyPause=19

PAUSE 键

vbKeyCapital=20

CAPS LOCK 键

vbKeyEscape=27

ESC 键

vbKeySpace=32

SPACEBAR 键

vbKeyPageUp=33

PAGEUP 键

vbKeyPageDown=34

PAGEDOWN 键

vbKeyEnd=35

END 键

vbKeyHome=36

HOME 键

vbKeyLeft=37

LEFT ARROW 键

vbKeyUp=38

UP ARROW 键

vbKeyRight=39

RIGHT ARROW 键

vbKeyDown=40

DOWN ARROW 键

vbKeySelect=41

SELECT 键

vbKeyPrint=42

PRINT SCREEN 键

vbKeyExecute=43

EXECUTE 键

vbKeySnapshot=44

SNAP SHOT 键

vbKeyInser=45

INSERT 键

vbKeyDelete=46

DELETE 键

vbKeyHelp=47

HELP 键

vbKeyNumlock=144

NUM LOCK 键

A 键到 Z 键

常数和数值

描 述

vbKeyA=65

A 键

vbKeyB=66

B 键

vbKeyC=67

C 键

vbKeyD=68

D 键

vbKeyE=69

E 键

vbKeyF=70

F 键

vbKeyG=71

G 键

vbKeyH=72

H 键

vbKeyI=73

I 键

vbKeyJ=74

J 键

vbKeyK=75

K 键

vbKeyL=76

L 键

vbKeyM=77

M 键

vbKeyN=78

N 键

vbKeyO=79

O 键

vbKeyP=80

P 键

vbKeyQ=81

Q 键

vbKeyR=82

R 键

vbKeyS=83

S 键

vbKeyT=84

T 键

vbKeyU=85

U 键

vbKeyV=86

V 键

vbKeyW=87

W 键

vbKeyX=88

X 键

vbKeyY=89

Y 键

vbKeyZ=90

Z 键

0 键到 9 键

常数和数值

描 述

vbKey0=48

0 键

vbKey1=49

1 键

vbKey2=50

2 键

vbKey3=51

3 键

vbKey4=52

4 键

vbKey5=53

5 键

vbKey6=54

6 键

vbKey7=55

7 键

vbKey8=56

8 键

vbKey9=57

9 键

数字小键盘上的键

常数和数值

描 述

vbKeyNumpad0=96

0 键

vbKeyNumpad1=97

1 键

vbKeyNumpad2=98

2 键

vbKeyNumpad3=99

3 键

vbKeyNumpad4=100

4 键

vbKeyNumpad5=101

5 键

vbKeyNumpad6=102

6 键

vbKeyNumpad7=103

7 键

vbKeyNumpad8=104

8 键

vbKeyNumpad9=105

9 键

vbKeyMultiply=106

乘号 (*) 键

vbKeyAdd=107

加号 (+) 键

vbKeySeparator=108

ENTER 键(在数字小键盘上)

vbKeySubtract=109

减号 (-) 键

vbKeyDecimal=110

小数点 (.) 键

vbKeyDivide=111

除号 (/) 键

功能键

常数和数值

描 述

vbKeyF1=112

F1 键

vbKeyF2=113

F2 键

vbKeyF3=114

F3 键

vbKeyF4=115

F4 键

vbKeyF5=116

F5 键

vbKeyF6=117

F6 键

vbKeyF7=118

F7 键

vbKeyF8=119

F8 键

vbKeyF9=120

F9 键

vbKeyF10=121

F10 键

vbKeyF11=122

F11 键

vbKeyF12=123

F12 键

vbKeyF13=124

F13 键

vbKeyF14=125

F14 键

vbKeyF15=126

F15 键

vbKeyF16=127

F16 键

例4 下面的事件过程处理在文本框Text1种使用F1与Alt、Shift和Ctrl三个组合键组合使用时的事件。

(二) KeyPress事件

1.定义:

当用户按下或松开一个键时发生该事件

2.语法:

Sub object_KeyPress(keyascii As Integer)
说明:keyascii返回一个标准数字ANSI键代码的整数,当keyascii的值为0时可以取消点击键盘的行为。
KeyPaess事件过程在载取输入的击键时是非常有用的,它可以测试击键的有效性、限制字符输入或在输入时对其进行格式化处理。改变keyascii的值可以改变所显示的字符。
KeyPress事件不显示键盘的物理状态,只传递一个字符它将每个字符的大、小写形式作为不同的键代码,即作为两种不同的字符。
使用Chr(Keyascii)函数可以将Keyascii参数转变为一个字符;使用Keyascii=Asc(char)表达式可以将一个字符转变为ANSI数字。

例5

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then

Beep

KeyAscii = 0

End If

End Sub

复习前面所学知识:

1. 作业

2. 复习命令按钮、单选钮和复选框的使用方法及加载图形的方法


 

第一讲 概述
第二讲 集成开发环境、创
建、发布

第三讲 基本数据类型、常
量与变量

第四讲 运算符和表达式、
常用内部函数
第五讲 顺序、分支结构
第六讲 循环结构
第七讲 数组
第八讲 过程与函数调用
第九讲 VB常用控件介绍(
一)
第十讲 VB常用控件介绍(
二)
第十一讲 VB常用控件介绍
(三)
第十二讲 VB常用控件介绍
(四)
第十三讲 简易记事本的编
辑功能设计(一)
第十四讲 简易记事本编辑
功能设计(二)
第十五讲 记事本管理功能
设计(一)
第十六讲 记事本管理功能
设计(二)
第十七讲 计算器设计
第十八讲 补充:鼠标、键
盘事件
第十九讲 实现图片浏览器
第二十讲 简单贺卡设计与
绘图操作(一)
 
潍坊职业学院信息工程系网络中心制作