a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 244|回复: 5

[Visual Basic] 2011年度计算机等级考试二级VB复习指导(18)

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
 4.2.1 鼠标事件  在第2章已经介绍过,鼠标事件有共有5种,它们分别是MouseDown(按下鼠标键)、MouseUp(释放鼠标键)、MouseMove〔移动鼠标)、Click(单击)与DblClick〔双击).
* r2 D7 l& T9 g  1. Click事件与DblClick事件7 B! |, k% R! u
  窗体的Click事件过程的形式如下:" ?1 t" q" P. ]) P1 @
  Private Sub Form_Click(), A- d6 t6 C0 ]* T6 d) ?  {3 t# R
  End Sub4 [; m0 S, ]* f; |$ a
  在该事件过程中添加一段代码,运行程序时,当使用鼠标单击窗体时,则该段代码就会被执行。0 K' B0 H2 K; G$ Z: m
  提示:使用双击窗体的方法打开【代码】窗口。出现在代码窗口中的事件过程不是Click事件过程,用户可以在【代码】窗口的事件框中选择Click事件,则Click事件过程的框架就会出现在代码编辑区中。用户也可以自行输入事件过程的框架。对于其他一些事件,如DblClick事件,待况与此类似。
9 ~, Q4 x5 O: f( Z+ v2 B8 R  窗体的DblClick事件过程的形式与Click事件过程的形式类似,如下所示:
& n6 ]7 @' [1 F2 w  Private Sub Formes DblClick()
" P% z8 q/ w9 W5 R  End Sub, K' v4 s/ B: A, l
  在该事件过程中添加一段代码,运行程序时,当使用鼠标双击窗体时,则该段代码就会被执行。' C0 G2 J6 F. f( f9 H1 [& q  Z
  注意:双击鼠标会同时触发Click事件与Db1Click事件,即在程序运行时,当用户双击窗体时,则Click事件过程与Db1Click事件过程都将被执行。& p+ x' ^5 v* J/ m  m
  2. MouseDown事件与MouseUp事件2 V" y: {5 p( F( [! P
  窗体的MouseDown事件过程与MouseUp事件过程类似,形式如下:
# J9 Y0 Z7 Z  e; w5 \  Private Sub Form_McuseDown(Button As Integer,shift As Integer,X As Single,Y As Single)
" @' E3 Z3 V4 Q% A& J1 o. x  End Sub. ]' X1 z/ q! Z, q& l% t! f
  Private Sub Form_MouseUp(Button As Integer,shift As Integer,X As Single,Y As Single)
! ]% X. F1 E5 M# O/ C  End Sub* y& Y' E9 W$ E/ e" P
  与Clicik与DblClick事件过程不同,在这两个事件过程中,含有Button、Shift,X和Y四个参数,其中参数Button用来判断用户按下的是鼠标的哪一个键。参数Shift用来判断是否按下Shift, Ctrl或Alt键构成组合状态,参数X和Y用来返回指针所在的位置。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:13 | 显示全部楼层

2011年度计算机等级考试二级VB复习指导(18)

 表4.4中列出了MouseDown事件过程中参数Button的返回值与对应的操作。它同样也适用于MouseUp事件过程- p) ]: o. y. t8 }0 K

) {' w% i- E* U+ q: @4 r  实例4.1识别用户所按的键
" R# D' N3 Z5 _0 F  在该程序中,当用户将鼠标移动到窗体上时,如果按下左键,则窗体上显示"您按下的是左键",如图4.2所示,如果按下右键,则窗体上显示"您按下的是右键",如图4.3所示。
; e5 q% R; A6 h0 F" Y5 y" R# @
7 N# C* ?; k- Z  
( s# J0 U  n% o& T6 N5 d: A5 L9 s  打开窗体的【代码】窗口,将下列代码添加到Form_MouseDown事件过程中:
7 Q2 A# h% ?$ v. h5 w% |  Private Sub Form_MouseDown(Button As Integer, shift As Integer,X As Single,Y As Single)' r% H/ G4 C  N! i# Z% z7 b4 G
  Select Case Button
  l* a! y8 n- ~: O' o4 g" [4 f# L  Case 1
) K5 P. r0 o7 H& ]  Form1.Print “您按下的是左键”* K4 h) f4 v' @* y5 P
  Case 2
7 I7 e5 g* w( ^2 Q  Form1.Print “您按下的是右键”
+ \+ {4 e  J5 a  End Select4 z1 B- n3 P% [3 K  d, D) |
  End sub: s$ ~. b$ M" _$ \7 {7 D# z9 Q+ T7 ^0 W
  在该段代码中,使用了Select Case语句来判断参数Button的值,使用窗体的Print方法来在窗体上显示文本。Print方法是窗体的一个很重要的方法,在很多实例中都使用到了该方法。
5 b6 n+ e3 C4 X% ?( |  o8 f' S7 E  运行该程序,当在窗体中按下鼠标的键时,就会触发Form_MouseDown事件过程,并将所按键代表的数值赋给参数Button.因此,Select Case语句就可以通过参数Button的值来判断用户所按的键。
4 o$ |8 N) W: ~8 u  表4.5中列出了MouseDown事件过程中参数Shift的返回值与对应的操作。它同样也适用于MouseUp事件过程。7 a5 y9 t" o! }0 f

! Y4 Z2 h) I5 |- q7 Q   # U" P$ |* O! ?  d0 S
  同样可以通过Select Case语句判断MouseDown事件过程中Shift参数的返回值,来获取用户所按下的组合键。用户可参照实例4.1自行编制一个小程序来熟悉Shift参数的使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:14 | 显示全部楼层

2011年度计算机等级考试二级VB复习指导(18)

 3. Mouse Move事件  窗体的Mouse Move事件过程的形式如下:
. h* m" g% U* T0 v7 x  v  Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)
% Z. l9 O1 \! q7 F, o0 `  End Sub
" ^) \8 M  B* T6 a8 @, J1 ?  MouseMove事件过程中参数的含义及其用法与MouseDown事件过程中的相应参数完全相同。这里给出一个探测鼠标位置的实例。: N( C" Y7 o  v: t' C5 Y( G3 [* Z
  实例4.2探测鼠标的位置1 {& ~# c% ?8 N! [/ }2 ^
  在该程序中,当用户在窗体上移动鼠标时,则在窗体上的文本框中会显示出当前鼠标的位置。
, v& b5 @2 z# _$ R  在窗体的左上角放置一个文本框,如图4.4所示。窗体与控件的属性设置如表4.6所示。
* Y6 d, z+ j: M) r+ ?4 T
$ x* d" v1 V: u2 O6 d 
# }2 P; v! P8 t* C, E  d: L0 s  @; f% X8 L/ ?0 ^0 f# x, O0 c- g
   ) ]3 z+ t7 t. \/ J/ |
  打开窗体的【代码】窗口,将下列代码添加到Form_MouseMove事件过程中:; o) x: ^( ?9 ]
  Private Sub From_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)! u9 ]* h5 g5 d% E+ w
  Texts1.Twxt="X '& X &"Y=" & Y
2 T2 N: h5 L, ^' r; q+ N) A  End sub4 c4 i- {4 V7 l, [
  由于在移动鼠标时,MouseMove事件不断被触发,其中的代码也就不断地执行。因此,在移动鼠标时,文本框中的内容会不断被更新。
& M8 r9 f' `% S0 X, Y8 I7 T  运行该程序,在窗体中移动鼠标,则文本框中动态显示出鼠标的位置,如图4.5所示。
* x. d' b, z; ^4 T+ y' \/ }8 H8 K  x; A2 D& ^7 [. G
   ' }" w' d- M+ }
  键盘事件有共3种,分别是KeyDown(按下键)、KeyUp(释放键)与KeyClick(敲击键).) v* y( }; n) X, {
  注意:只有当窗体为当前活动窗体时,按键才能触发窗体的键盘事件。另外,如果窗体上有能获得焦点的控件,则按键触发的将是控件的键盘事件。如果希望按键后,总是能触发窗体的键盘事件,应该将窗体的KeyPreview属性设置为Ture.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:15 | 显示全部楼层

2011年度计算机等级考试二级VB复习指导(18)

 1.KeyClick事件  窗体的KeyClick事件过程的形式如下:. t% q7 i* h6 o* m
  Private Sub Form_KeyPress(KeyAscii As Integer)
6 u( }/ D. `" q8 J, f# d, C% f5 K  End Sub
" z. Y8 e2 [' O, W+ g) g: v2 w  其中参数KeyAscii是一个整数,用来返回用户所按键的ASCII码。利用该参数可以判断出用户按的是哪一个键。
! O! p' {1 ~9 }1 N& {  实例4.3显示所按键的ASCII码
: ?& |' k& \$ j  F6 r2 U  运行该程序,当用户按健盘上某键时,在窗体上显示用户所按键的ASCII码,例如,按回车键,则在窗体中显示"所按键的ASCII码值是:13.* w5 |/ h# _! }, y
  打开【代码】窗口,将下列代码添加到Form_KeyPress事件过程中:$ I$ C+ K, f& H' J. C0 C
  Private Sub Form_KeyPress(KeyAscii As Integer)) L* A& s. A7 o3 z# x9 M" S& G4 ?
  Print"所按键的ASCII码值是:"&KeyAscii
9 H0 I2 p: V1 G; t$ G" @0 G/ N  End Sub& }- |* X/ {% i: z5 s! f  Z4 {
  运行该程序,按键盘中某键,则窗体上就会显示出所按键的ASCII码,如图4.6所示的是按下Enter键和q键的效果。表4.7中列出了键盘按键的ASCII码。
  m9 S+ p) u# l7 k4 s* I$ u
5 _# c+ @: C% [1 F! T  
4 P/ R2 z" ]- F9 m9 H5 u1 x5 f, v  W+ e
  
8 x+ J& V+ H1 h% m2 m  2. KeyDown与KeyUp事件过程
+ w$ ^, e, l7 V* L7 O3 z" `/ w  KeyDown与KeyUp事件过程的形式相同,如下所示:, r% D4 a" V% ]: T' L! h
  Private Sub Form_KeyCode As Integer,Shift As Interger)" l$ Y% n9 v) W2 ~0 D+ e
  End Sub
7 F' p+ }1 f6 k  Private Sub Form_keyUp(keyCode As Integer,Shift As Integer)
4 B- U2 L% e$ u) [  End Sub+ Y. d) }  Q' V9 G5 e) @+ w; z& I4 I
  KeylDown与KeyUp事件过程中的Shift参数与MouseDown事件过程中的Shift参数的含义相同。参数KeyCode则是用来返回按键的键码。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:16 | 显示全部楼层

2011年度计算机等级考试二级VB复习指导(18)

功能键、换档键以及编辑键等没有ASCII码,但所有的键都有一个键码。每一个键(不是字符)对应一个键码,大键盘上的数字键和小键盘上的数字键的键码也不同。字母键的键码就是其大写字母的ASCII码。对于有上下档的按键,其键码是下档字符的ASCII码。表4.8中列出了一些按键的键码。2 u7 g; e( u& `1 j
   : a! w& Q: l+ s) U7 O) t4 o
  读者可参照实例4.3,自行编写一个可以显示用户所按键键码的程序。
. ~2 P4 i1 ^/ k" e  除鼠标与键盘事件外,窗体对象还有其他一些事件,如表4.9所示。
6 j. Y$ W" T0 `6 J6 ?$ n- P" Z1 G; O
   ( s8 s! B6 M- \2 T# f, s
  可以在【代码】窗口中查到窗体所支持的所有事件。在【代码】窗口的【对象】框中选择Form,单击【事件】框,即可弹出窗体的事件列表,如图4.7所示。) Z) s8 Q- r2 |

# I  Q3 }- r" ?$ w1 A) p% Y% _* d   + A' T: w) g5 c4 @
  一些应用程序,当用户改变窗体的大小后,如拖动窗体边框或最大化等,则窗体中的控件也随着改变以适合窗体的大小。这里,我们编写一个程序来模拟这种情形。
5 T$ Q3 v: w- Q3 \% @# z4 j  实例4.4窗体的Resize事件2 |+ Z5 G# b  Z- q! A+ V
  在该程序中,当用户改变窗体的大小时,则窗体中按钮的大小也将成比例地改变,并且按钮始终处于窗体的中心。1 G/ J. j% I% s5 Z6 F  q9 t! \
  在窗体中放置一个按钮控件,如图4.8所示。窗体与按钮的属性设置如表4.10中所示。6 m* ?" o) x( D# j

  \6 e# M( O- [, _   " E; o% x. r& m/ P2 {" y4 A
- G' `4 D# c# Q" A/ x
  
$ |: f6 P7 x" S# T, W  打开【代码】窗口,将下列代码添加到Form- Resiae事件过程中:
; e& q8 M  y4 W  Private Sub Form_Resize()
6 r2 }1 l& G1 d5 J5 D$ i7 r  ComSize.width=ForSize.Width/55 w0 F$ M( \. ~3 u' y( m
  ComSize.Height=ForSize.Height/6
' x* K: m( M1 b2 V9 r  ComSize.Top=ForSize.Height/2-ComSize.Height/22 m  A. I( P" y3 \; R
  ComSize.Left=ForSize.width/2-ComSize.Width/2
5 J. t' S/ m4 X" z0 s, v$ L  End Sub5 I# P) K, [+ B0 G/ Y) J6 a# H
  在该段代码中,我们将按钮的宽度设置为窗体宽度的1/5,按钮的高度设置为窗体高度的1/6,并将按钮的位置设置在窗体的中心。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 22:10:17 | 显示全部楼层

2011年度计算机等级考试二级VB复习指导(18)

 运行该程序,则窗体如图4.9所示。可见,在窗体启动后,窗体的Resize事件就被触发了。使用鼠标拖动窗体的边界来改变它的大小,或单击最大化按钮使窗体最大化,可以发现,窗体中按钮的大小也随着成比例地改变,并且始终处于窗体的中心,如图4.10所示。/ l4 Z! z& I/ `3 e9 r
   ) Y4 V; y4 H. p
  由于QueryUnload事件在窗体卸载之前发生,因此,可以通过编写QueryUnload事件过程来完成一些工作,如文件的保存等。该事件在MDI应用程序中相当重要,这在第七章中还会讲到。这里,只是通过一个实例介绍QueryUnload事件的使用。* B" n: ]. l" I4 _( ~
  实例4.5窗体的QueryUnload事件
/ y, M/ m3 |. r  打开窗体的【代码】窗口,在事件列表中选择QueryUnload事件,则QueryUnload事件过程的框架就出现在代码编辑区中,形式如下:% H, S/ l4 d$ f7 s7 V& c0 h% V
  Private Sub Form_QueryUnload(Cancel As Integer,Unload(Cancel As Integer, UnloadMode As Integer)" E/ _4 j7 S. o
  End Sub
+ R; p7 z+ o2 [! r2 W8 W  其中参数Cancel是一个整数。若在QueryUnload事件过程中给此参数赋一个非零值(True),则将阻止窗体的关闭;若赋0值(False),则将关闭窗体。如果忽略此参数,窗体将被关闭。
# A6 h2 _/ [& y3 E. b+ T% g  UnloadMode参数是事件的返回值,它表示引起QueryUnload事件的原因。表4.11中列出了该参数的返回值及其含义。1 Y1 d6 I: d+ r( ~5 w9 x0 V0 C2 Q
" u5 l7 w- N, d2 o
  
" K5 h6 v3 ~" w( c4 ]  编写QueryUnload事件过程如下:5 G9 B) c9 H5 M4 b3 q/ k, q* ]
  Private Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)
- |8 w- [  H  S' [$ n) p* Z  If UnloadMode=0 Then5 ?, s2 \- i6 V: Z
  Print“单击关闭按钮关闭我,休想!”
/ q3 e. C& S; K) Z8 @  t' i) i% c  Cancel=Ture5 y8 C4 }! y; `( D# g- `
  End If
4 j, Y# C6 J8 M9 K. v) L  h  End Sub7 w( C* l/ \" ^( y/ v% O
  运行该程序,单击窗体右上角的【关闭】按钮,窗体并不关闭,并且显示"单击关闭按钮关闭我,休想!",如图4.11所示。
4 h- R! q! d9 f" ^1 E& |; i6 R6 F6 \/ |
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 08:41 , Processed in 0.333306 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表