先说一个类似的方法:KeyPress
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if (e.KeyChar.ToString() == "\r")
{
{
//按回车的时候处理
}
if(e.KeyChar<'a' || e.KeyChar>'z')
{
e.Handled=true;
}
}
或者:
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar<(char)97 || e.KeyChar>(char)122)
{
e.Handled=true;
}
}
对于处理各种普通字符来说,使用KeyPress事件进行判断再好不过了。
但KeyPress有其自身的局限性。它不能捕捉功能键的按键事件,如:F1——F12,shift,Ctrl,Alt,Tab,方向键,以及Insert,Home ,print等。
需要对这些按键事件进行处理的时候,请使用KeyDown或KeyUP事件。
当然,KeyDown或KeyUP事件 也可以对各种字符进行处理:
例:对功能键进行处理:
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode ==Keys.F1 )
{
frmHelp.ShowDialog();
}
}
注释:Keys——〉键盘枚举类型
frmHelp :自定义的另一个界面的实例。ShowDialog()方法,使该界面显示出来。
对普通字符的处理:(只允许输入0——9的数字)
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode<Keys.D0 ||e.KeyCode>Keys.D9)
{
e.Handled=true;
}
}
if(e.KeyChar<'a' || e.KeyChar>'z')
{
e.Handled=true;
}
}
或者:
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar<(char)97 || e.KeyChar>(char)122)
{
e.Handled=true;
}
}
对于处理各种普通字符来说,使用KeyPress事件进行判断再好不过了。
但KeyPress有其自身的局限性。它不能捕捉功能键的按键事件,如:F1——F12,shift,Ctrl,Alt,Tab,方向键,以及Insert,Home ,print等。
需要对这些按键事件进行处理的时候,请使用KeyDown或KeyUP事件。
当然,KeyDown或KeyUP事件 也可以对各种字符进行处理:
例:对功能键进行处理:
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode ==Keys.F1 )
{
frmHelp.ShowDialog();
}
}
注释:Keys——〉键盘枚举类型
frmHelp :自定义的另一个界面的实例。ShowDialog()方法,使该界面显示出来。
对普通字符的处理:(只允许输入0——9的数字)
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode<Keys.D0 ||e.KeyCode>Keys.D9)
{
e.Handled=true;
}
}
第一个C#程序是一个简单计算器,要求为按钮(Button)添加键盘事件。我折腾了好久,没看到程序响应KeyPress事件,问了同学,发现要设置KeyPreview的值为true,让Frame首先响应键盘事件才行。