处理Windows Mobile的Click事件,使得它,而我的计划是堵不“排队”(Handle W

2019-10-28 09:31发布

我已经写了的Windows Mobile 6.x的一个简单的应用程序来招待我的女儿。 它保存一组动物图像动物噪声对随机显示图像中的一个。 当点击图像动物噪音扮演和两岁的注意力分散:-),然后显示下一个图像。

然而,由于她往往在屏幕来砸实际流量是图像显示和她点击了几次; 一些动物的声音播放,然后将图像切换到下一个随机动物。

我的猜测是,操作系统正在排队的点击事件,而该计划是阻止,因为它扮演的噪音,然后只要它能够处理它们。 在几乎相同的方式,你可以在打字时随身携带您的计算机挂起和显示文本时,一切又消失了。

所以,形式有两个变量

Private thisCollectionOfThings As ObjectStore
Private currentObject As RealWorldObject

ObjectStore的是围绕一个列表(中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

你可以看到我已经使出尝试删除的事件处理程序,以尽量避免点击排队问题,但它无法正常工作。

如何避免这将是超级感谢...任何意见,否则,我会尝试写在图片框控件我自己的包装,试图处理click但是我讨厌如果别人的经验表明,使用了我的时间这不会帮助。

Answer 1:

我会去简单(KISS):

  1. 使用称为像“IsPlaying模块”一个布尔值,并将其设置为true的权利,你播放的声音和假之前它完成之后。
  2. 把音频在后台线程打得那么用户界面保持响应。
  3. 如果布尔值为true,忽略单击处理屏幕水龙头。


文章来源: Handle Windows Mobile Click event so that it doesn't “queue” while my program is blocking