Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止重复键控代码运行(vb.net)_Vb.net - Fatal编程技术网

防止重复键控代码运行(vb.net)

防止重复键控代码运行(vb.net),vb.net,Vb.net,如果您在按键子按钮中按住该键,它会重复该代码,直到释放为止。 有没有办法防止代码持续运行并保持它只运行一次?谢谢 要做到这一点,您需要处理多个关键事件。比如说 Public Class Form1 Private keyHolding As Boolean = False Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown If Not keyHol

如果您在按键子按钮中按住该键,它会重复该代码,直到释放为止。
有没有办法防止代码持续运行并保持它只运行一次?谢谢

要做到这一点,您需要处理多个关键事件。比如说

Public Class Form1

    Private keyHolding As Boolean = False

    Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
        If Not keyHolding Then
            Label1.Text &= "Keydown event detected "
            keyHolding = True

            'Place the code that you want to run only once in the key down event here...
        Else
            Label1.Text &= "User is holding the key down "

            'Place the code that you want to run continuously in the key down event here...
        End If
    End Sub

    Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
        Label1.Text &= "KeyUp event detected "
        keyHolding = False
    End Sub

End Class
请记住,这种方法适用于标准windows窗体应用程序。例如,如果您正在开发一个游戏,那么这种方法将导致各种问题,并且通过本机API调用或一些游戏开发框架有更好的解决方案


希望这有帮助。

在KeyDown上,您可以将密钥代码存储在a中,然后在KeyUp上删除它。在KeyDown处理程序中执行任何操作之前,请检查它是否已在HashSet中,如果已存在,则不执行任何操作。