keyup事件的执行次数问题?
奇怪的按键操作,我的主窗口和按键事件二个程序都在这里,为什么按一次键J计数会=4.说明按一下键执行了四次keyup事件,不太明白。
- C# code
private void frmModify_Load(object sender, EventArgs e) { InsertColumn(); this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.frmModify_KeyUp); this.KeyPreview = true; //窗体接收所有键事件 if (Scanner_Open()) { thread = new Thread(ScannerRd); thread.IsBackground = true; thread.Start(); timer1.Enabled = true; } else { MessageBox.Show("扫描失败"); } }
- C# code
private void frmModify_KeyUp(object sender, KeyEventArgs e) { j++; //MessageBox.Show(e.KeyValue.ToString()); switch (e.KeyValue) { case 27: //if (dt.Rows.Count > 0) // dt.Rows.RemoveAt(dt.Rows.Count - 1); int i = dt.Rows.Count; if (i > 0) dt.Rows.RemoveAt(i - 1); break; case 37: case 39: Scanner_Trig(); timer1.Enabled = false; break; default: break; } }
[解决办法]
1.确定一下有没有其它的地方掉用事件。
2.this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.frmModify_KeyUp);注掉试试,
是不是disigner里已经加上这个事件了
[解决办法]
[解决办法]
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.frmModify_KeyUp);
删除掉试试
[解决办法]
你试试 this.KeyPreview = true; //窗体接收所有键事件 删掉这个..焦点在本窗体的时候,本来就是接受 所有key 事件的..
如果还是 不行
那么这个 应该是 当 按下键的时候 执行了 2次 keyup ..你 把keyup 换成 keypress;