1、KeyPress事件
4、如何判断控制键(Shift、Ctrl、Alt)按下状态
有三个重要的符号常量:vbShiftMask - 1(001)、vbCtrlMask - 2(010)、vbAltMask - 4(100)
(1)Shift = 1(001):只按下Shift键
(2)Shift = 2(010):只按下Ctrl键
(3)Shift = 4(100):只按下Alt键
(4)Shift = 3 = 1 + 2(011):按下Shift键与Ctrl键
(5)Shift = 5 = 1 + 4(101):按下Shift键与Alt键
(6)Shift = 7 = 1 + 2+ 4(111):按下Shift键、Ctrl键与Alt键
案例:利用窗体KeyDown事件,按下组合键Ctrl+A时,弹出消息框,内容“全部选定!”
运行程序,按下Ctrl+A组合键:
(二)鼠标事件
1、MouseDown事件
(1)触发条件
按下任意鼠标按钮时发生。
(2)过程格式
2、MouseUp事件
(1)触发条件
释放任意鼠标按钮时发生。
(2)过程格式
3、MouseMove事件
(1)触发条件
每当鼠标指针移动到屏幕新位置时发生。
(2)过程格式
(1)Button = 1(001):只按下鼠标左键
(2)Button = 2(010):只按下鼠标右键
(3)Button = 4(100):只按下鼠标中键
(4)Button = 3 = 1 + 2(011):按下鼠标左键和右键
(5)Button = 5 = 1 + 4(101):按下鼠标左键和中键
(6)Button = 7 = 1 + 2+ 4(111):按下鼠标左键、中键和右键
方法二、利用VB的过程添加工具生成过程框架,然后编写过程体。
2、创建Sub过程,名为IsPrimeNumber,包含两个参数
3、编写【列举】按钮单击事件处理代码
4、编写【清空】按钮单击事件处理代码
5、运行程序,测试效果
输入起始数与终止数,单击【列举】按钮:
为什么先输出3,再输出6?过程调用使用栈结构,先进后出。
1、创建工程,更名为“求解汉诺塔问题”,添加控件,设置属性
2、声明变量,编写通用过程与两个按钮单击事件处理代码
3、运行程序,查看效果
输入环个数,比如3,单击【求解】按钮:
三、Function过程
1、定义Function 过程
(1)过程格式
[Public|Private][Static] Function 函数名 ([形参表])_ [As 数据类型]
语句组End Function
注意:VB不像C、Java、VFP的函数,通过return语句来返回函数值,而是通过函数名变量来返回函数值。
这里演示一下Java里定义的阶乘函数factorial(n):
运行程序,单击【判断】按钮:
案例:用递推法和递归法编写阶乘函数过程
运行程序,测试两种方法的阶乘函数:
选择题真题演练:
循环初始条件:i=1,循环条件:i< 6,因此循环5次。
No.1 i=1,s=0+1/(1+1)=1/2 (此时可以排除A与B)
因为要循环5次,所以应该有5项数据相加,于是排除C,选择D。
四、传递参数
2、按地址传递参数
案例:编写交换两个变量值的过程Swap(x, y)
1、创建工程,更名为“利用地址传递交换变量值”,添加按钮,设置属性
2、创建交换变量值的通用过程Swap(x, y)与按钮单击事件处理代码
3、运行程序,单击【交换】按钮,查看结果
给通用过程Swap的两个参数前加上ByRef,显式声明为引用传递,即地址传递方式。
运行程序,单击【交换】按钮,你会看到结果完全相同。
选择题真题演练:
我们将按钮Command1的单击事件处理代码修改一下:
3、按值传递参数
按值传递参数是把实参变量的值传递给形参变量,实参变量的值在过程调用前后保持不变。定义过程时用ByVal关键字指出参数是按值来传递的。
如果将上述案例中Swap过程的参数改为按值传递,那么就无法实现交换变量值的功能。
选择题真题演练:
静态数组和动态数组都可以作为过程的参数。
案例:演示数组作为过程参数,求传入数组的元素之和。
1、创建工程,更名为“演示数组作为过程参数”,添加按钮,设置属性
2、编写通用过程Sum()和按钮单击事件处理代码
3、运行程序,查看效果
选择题真题演练:
假如函数fun1的参数m采用传值方式,那么结果又该是多少呢?
2、编写两个通用过程和一个按钮单击事件过程
3、运行程序,查看效果
单击【确定】按钮:
真考题库试卷(3)第(32)题也涉及到控件参数。
运行程序,测试效果:
单击图片框:
明明在工程目录里有“pic.jpg”文件,为啥不能加载呢?必须添加一个路径:
此时再运行程序,单击图片框:
单击标签:
除了用TypeOf函数判断控件类型之外,还可以用TypeName函数来判断。