- C# code
private void Form1_KeyDown(object sender, KeyEventArgs e) { if ((e.KeyCode == System.Windows.Forms.Keys.F1)) { // Soft Key 1 // Not handled when menu is present. } if ((e.KeyCode == System.Windows.Forms.Keys.F2)) { // Soft Key 2 // Not handled when menu is present. } if ((e.KeyCode == System.Windows.Forms.Keys.Up)) { // Up } if ((e.KeyCode == System.Windows.Forms.Keys.Down)) { // Down } if ((e.KeyCode == System.Windows.Forms.Keys.Left)) { // Left } if ((e.KeyCode == System.Windows.Forms.Keys.Right)) { // Right } if ((e.KeyCode == System.Windows.Forms.Keys.Enter)) { // Enter } if ((e.KeyCode == System.Windows.Forms.Keys.D1)) { //1 } if ((e.KeyCode == System.Windows.Forms.Keys.D2)) { // 2 } if ((e.KeyCode == System.Windows.Forms.Keys.D3)) { // 3 } if ((e.KeyCode == System.Windows.Forms.Keys.D4)) { // 4 } if ((e.KeyCode == System.Windows.Forms.Keys.D5)) { // 5 } if ((e.KeyCode == System.Windows.Forms.Keys.D6)) { // 6 } if ((e.KeyCode == System.Windows.Forms.Keys.D7)) { // 7 } if ((e.KeyCode == System.Windows.Forms.Keys.D8)) { // 8 } if ((e.KeyCode == System.Windows.Forms.Keys.D9)) { // 9 } if ((e.KeyCode == System.Windows.Forms.Keys.F8)) { // * } if ((e.KeyCode == System.Windows.Forms.Keys.D0)) { // 0 } if ((e.KeyCode == System.Windows.Forms.Keys.F9)) { // # } }
以上是VS自己生成的KeyDown事件代码可是按所有数字键、*、# 均得不到正确的KeyCode 其e.KeyCode都为:ProcessKey ,e.KeyValue都为:229 Soft Key 1、Soft Key 2还都捕捉不到没有进入事件。请问要怎么在KeyDown事件中得到正确的键值呢。因为某种原因在KeyPress事件中得到的按键结果值对我来说没用。
------解决方案--------------------
用e.KeyData试试
------解决方案--------------------
看一下MSDN
键事件按下列顺序发生:
KeyDown
KeyPress
KeyUp
若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs..::.Handled 属性设置为 true。某些键,如 Tab、Return、Esc 和箭头键,由控件自动处理。为使这些键引发 KeyDown 事件,必须在窗体上的每个控件中重写 IsInputKey 方法。用于重写 IsInputKey 的代码需要确定是否按下了某个特殊键,并且需要返回一个 true 值。
有关处理事件的更多信息,请参见 使用事件。
------解决方案--------------------
你把窗体上所有的控件都删掉,用下面这段代码测试一下:
- C# code
private void Form1_KeyDown(object sender, KeyEventArgs e) { System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder(); messageBoxCS.AppendFormat("{0} = {1}", "Alt", e.Alt); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "Control", e.Control); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "Handled", e.Handled); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "KeyCode", e.KeyCode); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "KeyValue", e.KeyValue); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "KeyData", e.KeyData); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "Modifiers", e.Modifiers); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "Shift", e.Shift); messageBoxCS.AppendLine(); messageBoxCS.AppendFormat("{0} = {1}", "SuppressKeyPress", e.SuppressKeyPress); messageBoxCS.AppendLine(); MessageBox.Show(messageBoxCS.ToString(), "KeyDown Event"); }