如何暂停执行几秒钟并继续循环?

mrN*_*mrN 1 vb.net delayed-execution

我正在创建一个模拟骰子滚动的小应用程序.为了模拟弹跳,我随机改变了图片的位置.现在要模拟多个弹跳,我使用for循环来连续改变图片框的位置.但它没有按照我的计划发生,表单只显示最后一个循环的位置.我甚至尝试使用System.Threading.Thread.Sleep(1000)希望显示弹跳,但即使他们只显示最后一个循环.

For bounceCount As Integer = 1 To bounces
    bounce(pb_dice1)
    bounce(pb_dice2)
    System.Threading.Thread.Sleep(3000) 'I need to pause here and show the recent change in position then continue after 3 seconds
Next
Run Code Online (Sandbox Code Playgroud)

bounce方法改变了位置PictureBox.

如何暂停我的for循环,显示新定位的骰子,然后在3秒后继续?

Han*_*ood 5

在事件处理程序完成执行之前,控件不会刷新其图形.否则,如果对一个或多个控件进行了多次更改,当您真正想要的是最终结果时,它们会反复刷新.

要强制控件刷新它的图形,您需要在睡眠前插入以下行:

PictureBox1.Refresh()
Run Code Online (Sandbox Code Playgroud)

当然,您可能必须更改PictureBox1为另一个控件的名称.此外,可能值得刷新父控件(即包含骰子的控件).