日期:2014-05-17  浏览次数:20954 次

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里已经加上这个事件了

------解决方案--------------------
探讨

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;