[音乐]
同学们好,这次课我们讲解一个例题
键盘事件的响应,这个例题的主要内容是
对窗体的3个键盘事件编写响应代码 输出相关事件的参数信息
现在我们来到了开发环境下 由于本个例题的,只是一些相关事件的响应代码
所以我直接已经把这个工程建立好,把代码输入进去了,与相关的代码也比较冗长一些
为了节省大家时间,我已经提前录入好了,大家先看啊,这个主窗体没有放任何控件
我只是响应了主窗体的三个事件 就是三个我们之前学过的三个关键的键盘事件
一个是KeyDown,一个是KeyPress,一个KeyUp,然后输出的这个响应的- 代码是什么呢?
根据咱们之前的讲述,我们知道这三个事件
的响应的发生顺序,一般是先进行KeyDown,因为按键肯定要先按下去嘛,然后
在KeyDown和KeyUp之间有一个KeyPress事件,最后是KeyUp事件
所以说呢,我们把在我们这儿声明了一个string是
eventMsg,它呢,由它在每个事件内收集相关事件的
参数信息,三个都收集好之后呢,最后在最后一个事件KeyUp这儿
把相应的信息给,用MessageBox把它输出
出来,那么一看它收集了什么信息呢?首先在KeyDown里收集了
有关KeyDown的,这一行就说明我们已经有KeyDown信息了 然后看有没有按Alt键,有没有按Shift键,有没有按Crtl键
等等,然后再输出它相应的KeyCode、 KeyData和KeyValue
在KeyPress的这个,因为这个事件它的参数相对简单一些
直接输出它这个Key,KeyPress键这个对应的这个字符,最后这个KeyUp
键,因为这个KeyUp键,我们一般,它这个里面带的参数我们 不太需要了,因为跟前面有一定的重复,所以我们这儿直接
显示一下我们有KeyUp就可以了。
好,现在咱们来调试一下这个程序 这里我把这个窗口拖到这儿,现在我把这个输入
焦点放在这个窗体上,我按下任何一个键盘的键,都应该有相应的 键盘事件响应。
我先,我现在先按一个小写的h键
好,大家看到没有?我按到了一个小写的h键,注意是按一个小写h键 现在是KeyDown、
KeyPress和KeyUp三个事件都响应了 三个事件都响应了呢,其中KeyDown键,大家都知道KeyDown这个事件它是不区-
分大小写的 所以它的KeyCode是h,KeyData也是h,等等等等,而KeyPress它是-
区分大小写的,因为它知道我输入的是 一个小写的h,因为我这儿CapLock并没有输,KeyUp也写上了,注意到它们之间-
的区别啊 现在呢我再按一个F1键
大家发现没有,我按了F1键之后
KeyDown和KeyUp都响应了,就是没有KeyPress,没有KeyPress- 这个事件响应,原因是什么呢?
大家都知道,F1键是我们键盘上的一个非常常用的键,没错,但是这个键
并没有相对应的字符,所以说它没有KeyPress的事件,它只有 KeyDown,F1
F1,KeyUp,好,我现在再按一个 Shift
+ h,好,大家有没有看到
我刚才,大家有没有发现,老师,为什么这么多消息?原因很简单,我刚才按shift +
h的时候,这个shift键按了多了一下,因此它把每个KeyDown,大家看到没- 有,都给
采集到了,咱们都知道,只有那Up那一下才,才会,才会最后把这MessageBox输- 出来,所以它
每个shift都采集到,这回我按快一点,咱们再试一下啊 好,这下就比较好了。
我按快一点儿呢,发现,大家有没有发现有两个KeyDown 一个是shift,看到没有?一个是shift,另外一个是h
一个shift,表示,两个,为什么两个KeyDown,因为我的确按了两个键,但是产- 生的字符大家应该知道
我们在记事本里输入字符的时候,一个shift + h,只是显示个大写,刚好就在这儿
这个大 H 在KeyPress这儿就出现了,对吧?现在我再按一个键
诶,为什么只有KeyUp这个事件啊?
KeyDown呀,还有别的,KeyDown还有那个KeyPress事件都没有
这个是怎么回事呢?原因是我现在这个键盘是一个笔记本键盘
我现在刚才按的键是我这个笔记本键盘上的PrintScr键,这个键
没有相应的键值,因为它只是一个截图,相当于把我们这个屏幕截图一下
但是它的确有KeyUp,这就说明了我们仅仅是键盘输入我们就设置这三个消息
的确是一点都不多余的,这三个消息都有各自各自的用途
好,今天我们通过这一个简单的例题,让大家了解到了
三个键盘事件各自的用途,和它们之间的区别,谢谢大家!
[空白_录音]