Vb.net 确定listview的索引更改是否由鼠标或键盘触发

Vb.net 确定listview的索引更改是否由鼠标或键盘触发,vb.net,winforms,listview,Vb.net,Winforms,Listview,如何确定listview的索引更改是否由鼠标或键盘触发 要确定选定的索引更改事件,我使用 Private Sub lv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv.SelectedIndexChanged End Sub 是否存在仅用于鼠标单击的事件?或者检测是否由鼠标点击或键盘触发的任何条件?请提供帮助我相信您可以检查Sender ListView的M

如何确定listview的索引更改是否由鼠标或键盘触发

要确定选定的索引更改事件,我使用

Private Sub lv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv.SelectedIndexChanged

End Sub

是否存在仅用于鼠标单击的事件?或者检测是否由鼠标点击或键盘触发的任何条件?请提供帮助

我相信您可以检查Sender ListView的MouseButtons属性,以确定用户是否按下了任何鼠标按钮:

Private Sub lv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv.SelectedIndexChanged
    If sender.MouseButtons = MouseButtons.None Then
        ' No buttons being pressed (keyboard used)
    Else
        ' Mouse button being pressed
    End If
End Sub

这是相当不明智的。但是,使用ListView.MouseDown和PreviewKeyDown事件设置一个布尔变量是可行的,您可以在SelectedIndexChanged事件处理程序中测试该变量。仔细测试。@HansPassant,谢谢你的回答。。