.NET中读取按键的信息
有三个事件可以用于读取按键:KeyPress、KeyDown和KeyUp。当用户按下一个键并松开时,这三个事件的发生顺序是:KeyDown-KeyPress-KeyUp。
KeyPress事件的参数e中有一个char类型的KeyChar属性,因而此事件常用于判断字符。
1private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
2 {
3 if(e.KeyChar == char.Parse("A"))
4 {
5 MessageBox.Show("You pressed A");
6 }
7 if(e.KeyChar == (char)Keys.Enter)
8 {
9 MessageBox.Show("You pressed Enter");
10 }
如果要检查各种功能键,比如F1、光标键、Alt、Ctrl和Shift的组合键等,则需要使用KeyDown和KeyUp事件,按下某个键时,拥有焦点的控件发生KeyDown事件,松开时发生KeyUp事件。2 {
3 if(e.KeyChar == char.Parse("A"))
4 {
5 MessageBox.Show("You pressed A");
6 }
7 if(e.KeyChar == (char)Keys.Enter)
8 {
9 MessageBox.Show("You pressed Enter");
10 }
1private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
2 {
3 if(e.Control == true && e.KeyCode == Keys.C)
4 MessageBox.Show("You pressed Control + C");
5 }
如果窗体的某个控件拥有焦点,则该控件会接收所有的键盘输入,但有时希望窗体能接收这些输入,这时要将窗体的KeyPreview属性设置为True。窗体先接收这些事件,处理完成后再分配给具有焦点的控件。如果想要仅在窗体级别处理键盘事件并且不允许控件接收键盘事件,请将窗体的事件处理方法中的KeyPressEventArgs.Handled属性设置为True。2 {
3 if(e.Control == true && e.KeyCode == Keys.C)
4 MessageBox.Show("You pressed Control + C");
5 }
1private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
2 {
3 if(e.Control == true && e.KeyCode == Keys.C)
4 MessageBox.Show("Form Handled");
5 e.Handled = true;
6 }
2 {
3 if(e.Control == true && e.KeyCode == Keys.C)
4 MessageBox.Show("Form Handled");
5 e.Handled = true;
6 }