窗体的存在周期中的事件:
在一个窗体卸载关闭时,我们知道会发生Unload事件,事实上,在Unload事件发生前,另一个重要事件会发生,即Form_QueryUnload事件,在此事件中,为用户提供停止卸载继续工作的机会,如下:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
End Sub
其中有两个参数:cancel:若设此参数为True,可阻止unload事件发生。
unloadmode:返回引起窗体卸载关闭的原因:
0为使用标题栏"关闭"("关闭"纽或标题栏的系统菜单栏),
1为代码中用unload me语句,2为Windows环境会话结束;3为Windows任务管理器关闭程序;4为MDI子窗体关闭。
在窗体的存在周期中,发生的窗体事件依次为:
Form_initialize(初始化)->Form_Load(加载)->form_Resize(调整尺寸)->form_Activate(激活)->Form_GotFocus(获得焦点)
->Form_Paint(打印)->Form_QueryUnload(为用户提供卸载工作的机会)->Form_Unload(卸载)->Form_Terminate(结束).
我们经常用unload me来关闭一个窗体,但此命令并不能将一个窗体从内存中完全清除,要想完全移走窗体,应将窗体设置为nothing,即在form_unload事件中写:
set form1=nothing
有关鼠标和键盘的事件:
键盘事件:KeyPress、KeyDown、KeyUp
如果按下键盘上的一个会产生ASCII码的字符键时,就会出发KeyPress事件;如果按下或者释放键盘上的任意键,就会触发KeyDown或KeyUp事件
KeyPress事件过程的语法:
private sub <对象名>_Keypress (keyAscii as integer)
注:参数keyAscii参数是所按键的ASCII码值。
keyDown和keyUp事件
语法:
private sub <对象名>_event (KeyCode as integer,shift as integer)
注:
(1)event是键盘事件的名字,keydown和keyup
(2)参数keycode表示按下的物理键,通过ascii码值或键代码常数来识别。
(3)参数shift用于表示键盘事件发生时shift、ctrl和alt键的状态。shift是一个位域参数,由若干位组成,每个位的信息都指出某一状态是打开还是关闭。其中最右侧三位用来表示shift、ctrl和alt键的状态。具体参数查vb手册或msdn
鼠标事件:MouseDown、MouseUp、MouseMove
当用户按下鼠标时触发MouseDown事件;松开鼠标时触发MouseUp事件;鼠标指针移动时触发MouseMove事件。
语法:
private sub<对象名> _event (Button as integer,shift as integer,X as single, y as single)
注:
(1)参数Button 表示引起该事件的是鼠标的哪一个键。它是一个位域参数,其中三个最低位分别用来表示鼠标的左键、右键和中键。
(2)shift和键盘事件中的一样
(3)参数x和y表示鼠标指针的位置
有关拖放事件
dragdrop事件:当源对象被拖动到目标对象上并释放鼠标键,或者以参数值vbEndDrag调用Drag方法时,将触发目标对象的DragDrop事件
语法格式:
private sub <对象名>_DragDrop (Source as control,x as single,y as single )
DragOver事件:当源对象被拖动经过目标对象时,触发该对象的DragOver事件。
语法格式:
private sub <对象名>_ DragOver (Source as control,x as single,y as single,state as integer)
注:
state表示控件的转变状态,取值为vbEnter、vbLeave、vbOver,表示源对象正在进入、正在离开或经过目标对象。