各位同学,我想在OnKeyDownEven事件中处理按键按下后的动作,只想它每次按下时处理一次,但是长按按键时会一直触发OnKeyDownEven,请问要怎么解决?如何判断是否长按了某个键?

解决方案 »

  1.   

    操作系统设置里就是长按按键时会一直触发OnKeyDownEven
      

  2.   

    记录上次按键的时间,每次触发事件时用date.now-上次时间,小于你设定的时间则return。
      

  3.   

    相应代码还不是一样么? 例如 我记录的是按下A键的处理代码时间,那么长按A键还是会一直触发事件和A键的代码
      

  4.   

    我不知道你到底有没有动手试试,说句不中听的话:想当然的态度是找不到解决问题的办法的。
            DateTime t;
            int iCount;        private void Form1_Load(object sender, EventArgs e)
            {
                t = DateTime.Now;
            }        private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if ((DateTime.Now - t).TotalSeconds > 3)
                {
                    iCount++;
                    this.Text = "这是第" + iCount + "次触发KeyDown";
                    t = DateTime.Now;
                }
            }
      

  5.   

    楼上的方法应该可以,或者在keyup事件里释放也是中可行的方法。
    楼主你这种态度问问题还是别来问了