事件处理方法一般具有两个参数:
第一个是object类型的对象,指出事件产生的主体。
第二个参数则包含了事件的参数。
从Control类派生的控件都可以处理鼠标事件和键盘事件。
对于鼠标事件,第二个参数有两种类型:EventArgs;MouseEventArgs。
鼠标主要有六种处理函数。其中前三种的参数是EventArgs,后三种是MouseEventArgs。
- MouseEnter:当鼠标进入控件的边界时产生此事件。
- MouseHover:当鼠标悬停在控件上时产生。
- MouseLeave:当鼠标离开控件时产生。
- MouseDown:当鼠标位于控件内,且按下鼠标按钮(不区分左键还是右键)时产生。
- MouseUP:当鼠标位于控件内,松开鼠标按钮(不区分左键还是右键)时产生。
- MouseMove:当鼠标位于控件内,并且移动鼠标时产生。
MouseEventArgs的主要成员有:
- Button:按下的是鼠标的哪个按钮。
- Clicks:按下并释放鼠标按钮的次数。
- Delta:鼠标轮以转动的制动器数(鼠标轮的齿轮)的有符号计数。当旋转鼠标轮时,每碰到一个齿轮就会发送一个鼠标轮消息。Windows常数WHEEL_DELTA定义了一个鼠标轮总齿数,标准值为120。正值指示鼠标轮向前(远离用户的方向)转动;负值指示鼠标轮向后(朝着用户的方向)转动。
- Location:鼠标在产生鼠标事件时的位置。
X:鼠标在产生鼠标事件时的x坐标。
Y:鼠标在产生鼠标事件时的y坐标。
键盘事件总共有三个:
- KeyDown:在按下键时产生。
- KeyUp:在释放键时产生。
- KeyPress:在按下键时产生,出现在KeyDown事件之后,KeyUp事件之前。
KeyPress事件处理方法传递事件参数时,使用类KeyPressEventArgs,在这个类中只有两个属性:
- Handle:用于指示该时间是否被处理过,如果未处理时间,则会将它发送到操作系统进行默认处理。将Handled设置为true,则可以取消KeyPress事件;
- KeyChar:返回按下键的ASCII字符。
KeyDown和KeyUp消息则使用类KeyEventArgs传递消息参数,这个类的主要属性有:
- Alt:该值指示是否按下Alt键。
- Control:该值指示是否按下Ctrl键。
- Handled :该值指示是否处理过此事件。
- KeyCode:获取KeyDown或KeyUp事件的键盘代码。
- KeyData:获取KeyDown或KeyUp事件的键数据。
- KeyValue:获取KeyDown或KeyUp事件的键盘值。
- Modifiers:获取KeyDown或KeyUp事件的修饰符标志。这些标志指示按下的Ctrl、Shift和Alt键的组合。
- Shift:该值指示是否按下Shift键。
KeyDown和KeyPress的主要区别:
- KeyPress主要用来接收字母、数字等字符,KeyPress只能捕获单个字符。
- KeyPress不显示键盘的物理状态(比如Shift是否被按下),而只是传递一个字符。
- KeyPress将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。
- KeyPress不区分小键盘和主键盘的数字字符。
在KeyDown事件中,KeyEventArgs中有三个主要的属性传递键值,主要区别是:
- KeyCode最为常用,记录了键盘上按了哪个键,当使用组合键时如Ctrl+a,其值是“A”;
- KeyData也可以记录组合键,当使用组合键时如Ctrl+a时,其值为“A+Ctrl”;
- KeyValue则是KeyCode的数字值,当使用组合键时如Ctrl+a时,其值为65(A),注意不是97(a)。