.NET中读取按键的信息
有三个事件可以用于读取按键:KeyPress、KeyDown和KeyUp。当用户按下一个键并松开时,这三个事件的发生顺序是:KeyDown-KeyPress-KeyUp。
KeyPress事件的参数e中有一个char类型的KeyChar属性,因而此事件常用于判断字符。
1
private 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事件。
private 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
}1
private 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。
private 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
}1
private 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
}
private 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
}

浙公网安备 33010602011771号