显示弹出菜单后,ListView HitTest返回错误的值

时间:2019-01-28 12:27:48

标签: listview vb6 popup popupmenu hittest

我有一个名为listView_MouseUp的ListView方法,如果HitTest返回某些信息,该方法将在ListView中选择一个项目。之后,我测试是否用鼠标右键单击。然后,我打开一个弹出菜单,用于修改所选项目:

Private Sub listView_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim selectedListItem As ListItem
    Set selectedListItem = listView.HitTest(X, Y)
    If Not selectedListItem Is Nothing Then
        ' Select the item and load some text fields
        If Button = vbRightButton Then
            Me.PopupMenu popupChangeDocument
        End If
    End If
End Sub

如果第二次(在先前选择的项目上)单击(鼠标左键),则X和Y坐标正确(新值),并且弹出菜单不再可见。

如果我单击ListView的空白区域,则X和Y保持不变,并在单击位置打开弹出菜单。

为什么X和Y的值不更新?

1 个答案:

答案 0 :(得分:0)

  

This link from vb-helper应该有所帮助。

@BillHileman感谢您的链接。不幸的是,它没有解决这个问题。但是在测试您的答案的过程中,我发现了问题:

listView_MouseUp方法的末尾有一个 DoEvents ,导致了这种奇怪的行为。