Windows Forms 键盘事件
2011-07-15 13:41
92 查看
一个获有焦点的控件,当按下任一键的时候就会触发键盘事件。如果需要对特殊字符,比如说方向键(arrow keys)的键盘事件做出响应,通常需要使用KeyDown或者KeyUp 事件,而KeyPress事件并不会触发。当你需要限制用户输入并完成字符验证的时候通常使用KeyPress事件。
响应键盘的事件(根据事件触发的先后顺序)
KeyDown 在控件有焦点的情况下按下键时发生。事件会提供有关Alt键、Ctrl键、Shift键与键盘代码(key code)状态的附加信息(通过KeyEventArgs事件参数)。
KeyPress 在键按下完成且字符出现之前时发生。事件提供有关键盘字符的信息(通过KeyPressEventArgs事件参数)。同时该参数提供了Handled属性,当设置为true时取消字符输入并禁止显示在输入控件上。
KeyUp 在控件有焦点的情况下释放键时发生。发生在KeyPress事件之后,事件也会提供附加信息(通过KeyEventArgs事件参数)。
KeyPress 事件
KeyDown 事件
辅助按键(Ctrl,Alt,Shift)
窗体拦截KeyPress事件
Form 提供了一个KeyPreview属性,如果设置为true,窗体会在拥有焦点的控件之前接收到KeyPress事件。在处理Form的KeyPress事件时,如果设置KeyPressEventArgs.Handled属性为true,拥有焦点的控件不会接收到对应的KeyPress 事件。(如果不设置该属性为true,拥有焦点的控件会在Form之后接收到KeyPress事件)如果在KeyPresss事件中设置Handled属性为true,拥有焦点的控件仍然会接收KeyDown与KeyUp事件。
响应键盘的事件(根据事件触发的先后顺序)
KeyDown 在控件有焦点的情况下按下键时发生。事件会提供有关Alt键、Ctrl键、Shift键与键盘代码(key code)状态的附加信息(通过KeyEventArgs事件参数)。
KeyPress 在键按下完成且字符出现之前时发生。事件提供有关键盘字符的信息(通过KeyPressEventArgs事件参数)。同时该参数提供了Handled属性,当设置为true时取消字符输入并禁止显示在输入控件上。
KeyUp 在控件有焦点的情况下释放键时发生。发生在KeyPress事件之后,事件也会提供附加信息(通过KeyEventArgs事件参数)。
KeyPress 事件
view plaincopy to clipboardprint? 01.private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 02.{ 03. //获取按下的键所对应的字符 04. label1.Text = "Key Press: " + e.KeyChar.ToString(); 05.}
KeyDown 事件
01.private void textBox1_KeyDown(object sender, KeyEventArgs e) 02.{ 03. //显示按下的键盘代码 04. //例如当按下D键,不管Shift键是否按下,总是显示"D" 05. label1.Text = "Key Code : " + e.KeyCode.ToString(); 06. 07. //显示按下的键盘值 08. //例如按下Shift键显示16,按下D键显示68 09. label1.Text += "\nKey Value :" + e.KeyValue.ToString(); 10. 11. //KeyData包含每一个按下键的信息(Keys 枚举值的组合) 12. //调用ToString()获取一个以逗号分隔的列表 13. label1.Text = "\nKey Data :" + e.KeyData.ToString(); 14.}
辅助按键(Ctrl,Alt,Shift)
view plaincopy to clipboardprint? 01.private void textBox1_KeyDown(object sender, KeyEventArgs e) 02.{ 03. //使用Modifiers属性检查Alt,Control,Shift键是否按下 04. if ((e.Modifiers & Keys.Shift) == Keys.Shift) 05. { 06. } 07. //或者通过Alt,Control,Shift属性检查 08. if (e.Alt) 09. { 10. } 11.}注:也可以在任何地方通过 Control.ModifierKeys属性检查辅助按键是否按下
窗体拦截KeyPress事件
Form 提供了一个KeyPreview属性,如果设置为true,窗体会在拥有焦点的控件之前接收到KeyPress事件。在处理Form的KeyPress事件时,如果设置KeyPressEventArgs.Handled属性为true,拥有焦点的控件不会接收到对应的KeyPress 事件。(如果不设置该属性为true,拥有焦点的控件会在Form之后接收到KeyPress事件)如果在KeyPresss事件中设置Handled属性为true,拥有焦点的控件仍然会接收KeyDown与KeyUp事件。
view plaincopy to clipboardprint? 01.//注:首先要设置Form的KeyPreview属性为true 02.//在窗体级对输入字符进行拦截 03.protected override void OnKeyPress(KeyPressEventArgs e) 04.{ 05. //只允许输入控制字符(例如Backspace)与数字键 06. if (!Char.IsControl(e.KeyChar) && !Char.IsDigit(e.KeyChar)) 07. { 08. e.Handled = true; 09. } 10. base.OnKeyPress(e); 11.}本文链接地址为:/article/10062769.html
相关文章推荐
- Windows Forms 键盘事件
- 监听键盘事件NSNotificationCenter
- Android软键盘(七)键盘显示的状态下,onKeyDown方法无法监听到back事件
- Js监听键盘事件
- Android自动化测试初探(五): 再述模拟键盘鼠标事件(adb shell 实现)
- C#处理鼠标和键盘事件
- MFC 对话框Dialog响应键盘事件
- 编写一个组合鼠标事件和键盘事件的程序,该程序模拟一个电子白板,用户用鼠标在白板上画画,并通过键盘在上面写字
- js的键盘事件
- Android详细解释键盘和鼠标事件
- onkeydown onkeyup键盘事件
- C#处理鼠标和键盘事件
- UITextView: 响应键盘的 return 事件
- Qt鼠标键盘事件
- Android如何键盘按键响应事件
- Android如何监听:软键盘显示时:返回键事件
- C# Winform 键盘Keys响应事件
- HTML5 Canvas鼠标与键盘事件
- 键盘上的回车按钮点击事件的个数问题
- 侦听键盘事件