none
请教:如何判断一个按键的单击和连击状态,谢谢!!! RRS feed

  • 问题

  • 我按住向上键(向下键)不松手,按键处于连击状态,我一下一下按向上键(向下键),按键处于单击状态,求教如何判断这两中状态,谢谢!!!
    2012年5月31日 11:54

答案

  • 你好,

    我测试了以下代码,使用了stopwatch来记录按键按下到释放的间隔,自已定义一个阈值来判断是否是长按。我想这个应该不是最好的方法,但是希望可以起到抛砖引玉的作用。

        Dim stopWatch As New Stopwatch()
    
        Private Sub Form1_KeyUp(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
            stopWatch.Stop()
            Console.WriteLine(stopWatch.ElapsedMilliseconds.ToString)
            If stopWatch.ElapsedMilliseconds > 1000 Then
                Console.WriteLine("长按")
            End If
            stopWatch.Reset()
        End Sub
    
        Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            stopWatch.Start()
        End Sub
    Regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    • 已标记为答案 YQY888 2012年6月4日 21:42
    2012年6月1日 8:20
    版主
  • 谢谢!!!我试试!!!
    • 已标记为答案 YQY888 2012年6月3日 10:47
    • 取消答案标记 Youen ZenModerator 2012年6月4日 7:23
    • 已标记为答案 YQY888 2012年6月4日 21:41
    2012年6月1日 11:58
  • 你好,

    看来你已经解决了这个问题,如果可以的话请把你的方案发出来,然后将其标记为答复。现在标记一个没有实际内容的回复作为答复是不合适的,所以我取消这个标记。

    感谢你的理解。



    Shanks Zen
    MSDN Community Support | Feedback to us

    • 已标记为答案 YQY888 2012年6月4日 21:41
    2012年6月4日 7:23
    版主

全部回复

  • 你好,

    我测试了以下代码,使用了stopwatch来记录按键按下到释放的间隔,自已定义一个阈值来判断是否是长按。我想这个应该不是最好的方法,但是希望可以起到抛砖引玉的作用。

        Dim stopWatch As New Stopwatch()
    
        Private Sub Form1_KeyUp(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
            stopWatch.Stop()
            Console.WriteLine(stopWatch.ElapsedMilliseconds.ToString)
            If stopWatch.ElapsedMilliseconds > 1000 Then
                Console.WriteLine("长按")
            End If
            stopWatch.Reset()
        End Sub
    
        Private Sub Form1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            stopWatch.Start()
        End Sub
    Regards,


    Shanks Zen
    MSDN Community Support | Feedback to us

    • 已标记为答案 YQY888 2012年6月4日 21:42
    2012年6月1日 8:20
    版主
  • 谢谢!!!我试试!!!
    • 已标记为答案 YQY888 2012年6月3日 10:47
    • 取消答案标记 Youen ZenModerator 2012年6月4日 7:23
    • 已标记为答案 YQY888 2012年6月4日 21:41
    2012年6月1日 11:58
  • 你好,

    看来你已经解决了这个问题,如果可以的话请把你的方案发出来,然后将其标记为答复。现在标记一个没有实际内容的回复作为答复是不合适的,所以我取消这个标记。

    感谢你的理解。



    Shanks Zen
    MSDN Community Support | Feedback to us

    • 已标记为答案 YQY888 2012年6月4日 21:41
    2012年6月4日 7:23
    版主