近期某Windows项目中有个需求,在一个文本框中,要求只允许输入数字和字母N、S、E、W。
经过一番探索,实现了效果,代码如下:
tbxB.KeyDown += new KeyEventHandler(checkBLKeyDown);
//过滤键盘输入
private void checkBLKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
e.SuppressKeyPress = true;
if (!checkKeyCode(e.KeyData))
{
return;
}
}
//判断输入的键值是否要求
private bool checkKeyCode(Keys key)
{
if (key == Keys.D0) { return true; }
if (key == Keys.D1) { return true; }
if (key == Keys.D2) { return true; }
if (key == Keys.D3) { return true; }
if (key == Keys.D4) { return true; }
if (key == Keys.D5) { return true; }
if (key == Keys.D6) { return true; }
if (key == Keys.D7) { return true; }
if (key == Keys.D8) { return true; }
if (key == Keys.D9) { return true; }
if (key == Keys.NumPad0) { return true; }
if (key == Keys.NumPad1) { return true; }
if (key == Keys.NumPad2) { return true; }
if (key == Keys.NumPad3) { return true; }
if (key == Keys.NumPad4) { return true; }
if (key == Keys.NumPad5) { return true; }
if (key == Keys.NumPad6) { return true; }
if (key == Keys.NumPad7) { return true; }
if (key == Keys.NumPad8) { return true; }
if (key == Keys.NumPad9) { return true; }
if (key == Keys.N) { return true; }
if (key == Keys.S) { return true; }
if (key == Keys.E) { return true; }
if (key == Keys.W) { return true; }
return false;
}