当按下箭头键时,我需要使对象继续移动,但是当我按下按钮时停止。当我添加一个按钮时,整个代码就会停止。
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
答案 0 :(得分:0)
您的应用停止,因为只要按住该键,它就会卡在KeyDown
事件内的循环中,并且永远不会有任何空闲时间来处理待处理的Windows消息(例如重新绘制)。
简单,且令人难以置信的,以及#34;修复"这将是在每个循环内调用Application.DoEvents
。这将手动告诉您的应用程序处理待处理的消息。对于任何类型的认真工作,你都想避免这种方法,因为它是一个" Code Smell"这通常意味着你做错了什么。对于编写良好的应用程序,通常没有理由手动调用Application.DoEvents
。
最好将其更改为使用间隔较小的定时器,定期检查键盘的状态并处理应用程序的状态,以及#34; tick"一次。