我为WinMo 6.x编写了一个简单的应用程序来娱乐我的女儿。它拥有一组动物图像到动物噪声对,并随机显示其中一个图像。点击图像时会播放动物噪音,两岁时会分心:-)然后会显示下一张图像。
然而,由于她倾向于在屏幕上猛击,实际的流程是图像显示并且她点击了几次;播放了几种动物噪音,然后图像变为下一个随机动物。
我的猜测是操作系统在程序阻塞时排队点击事件,因为它会播放噪音,然后尽快处理它们。与您在机器挂起时进行打字的方式大致相同,当所有内容再次清除时,文本会显示。
因此表单有两个变量
Private thisCollectionOfThings As ObjectStore
Private currentObject As RealWorldObject
ObjectStore是一个围绕List(Of RealWorldObject)的包装类,它有一个getNextObject方法,该方法返回一个随机的RealWorldObject,它检查了最近没有返回的particluar对。
以我们的形式......
Private Sub picBox_Click(ByVal sender As Object, ByVal e As EventArgs)
RemoveHandler picBox.Click, AddressOf picBox_Click
picBox.BackColor = Color.Gray
If currentObject.getSoundLocation() <> "" Then
currentObject.playSound()
refreshScreen()
End If
End Sub
Private Sub refreshScreen()
picBox.Image = Nothing
currentObject = thisCollectionOfThings.getNextObject()
If Not currentObject Is Nothing Then addImage()
AddHandler picBox.Click, AddressOf picBox_Click
End Sub
Private Sub addImage()
picBox.Image = New Bitmap(currentObject.getImageLocation())
End Sub
您可以看到我尝试删除事件处理程序以尝试避免点击排队问题,但它无效。
任何有关如何避免这种情况的建议都会受到高度赞赏...否则我会尝试在图片框控件周围编写自己的包装器来尝试处理点击但是我不愿意浪费我的时间,如果有人其他人的经验表明这无济于事。
答案 0 :(得分:1)
我是为了简单(KISS):