当用户点击或双击VB6 ListBox控件中的项目时,我需要运行不同的代码。单击控件时,将执行Click事件处理程序。但是,我发现当我双击控件时,Click和DblClick事件处理程序都会执行。
任何人都有一个很好的解决方案,只需要在没有首先执行Click代码的情况下运行DblClick事件处理程序代码?
提前感谢任何建议。
答案 0 :(得分:3)
轻微破解,但您可以使用Timer控件和布尔变量:
我建议将计时器间隔设置为Windows双击时间设置,加上一点(应该有一个Windows API调用可以为您提供此值)。
答案 1 :(得分:1)
Visual Basic 6中列表控件的行为如下所示。
点击某个项目时会触发点击事件。
当您点击相同项目时,点击事件仍会被触发。
双击该项目时,点击事件和双击事件都会被触发。
注意#2。您需要做的是在您使用的表单中包含当前项目。每次检查点击事件时,您首先要查看当前项目是否与您单击的项目相同。如果它不是同一个项目,则通常会处理点击事件。
如果双击新项目,则用户同时执行两项操作。选择新项目并执行双击项目。在这种情况下,首先触发点击,然后双击。
此序列与控件执行您想要的操作没有什么不同。与单击新项目等待X秒然后双击同一项目相同。
如果您的点击事件涉及将任务移交给ActiveX EXE并立即终止或设置数据以便稍后由后台计时器处理。然后,您需要有一个信号量或一个标志来指示click事件产生的进程何时完成。在清除信号量之前,不会处理双击事件。
如果您有其他详细信息,我的回答可能更具体。以下是您可以运行的一些代码,以查看操作中的列表框。创建一个表单并将三个项目添加到列表中。然后添加以下代码。
Private Sub List1_Click()
Print "Clicked - " & Me.List1.List(Me.List1.ListIndex)
End Sub
Private Sub List1_DblClick()
Print "Double Clicked - " & Me.List1.List(Me.List1.ListIndex)
End Sub
执行以下步骤
您将看到各种动作组合。