(vb 2010)对象继续移动,但是当我按下按钮时停止。当我添加一个按钮时,整个代码停止

时间:2015-12-02 19:10:16

标签: vb.net

当按下箭头键时,我需要使对象继续移动,但是当我按下按钮时停止。当我添加一个按钮时,整个代码就会停止。

    Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Do While e.KeyCode = Keys.Left
        If PictureBox1.Left = 0 Then
            Exit Do
        End If
        PictureBox1.Left -= 1
    Loop
    Do While e.KeyCode = Keys.Right
        If PictureBox1.Left = 877 Then
            Exit Do
        End If
        PictureBox1.Left += 1
    Loop
    Do While e.KeyCode = Keys.Up

        If PictureBox1.Top = 0 Then
            Exit Do
        End If
        PictureBox1.Top -= 1
    Loop
    Do While e.KeyCode = Keys.Down

        If PictureBox1.Top = 420 Then
            Exit Do
        End If
        PictureBox1.Top += 1
    Loop
End Sub

1 个答案:

答案 0 :(得分:0)

您的应用停止,因为只要按住该键,它就会卡在KeyDown事件内的循环中,并且永远不会有任何空闲时间来处理待处理的Windows消息(例如重新绘制)。

简单,且令人难以置信的,以及#34;修复"这将是在每个循环内调用Application.DoEvents。这将手动告诉您的应用程序处理待处理的消息。对于任何类型的认真工作,你都想避免这种方法,因为它是一个" Code Smell"这通常意味着你做错了什么。对于编写良好的应用程序,通常没有理由手动调用Application.DoEvents

最好将其更改为使用间隔较小的定时器,定期检查键盘的状态并处理应用程序的状态,以及#34; tick"一次。