代码之家  ›  专栏  ›  技术社区  ›  Adam Ruth

ListView项激活延迟

  •  1
  • Adam Ruth  · 技术社区  · 15 年前

    我有一个带有激活属性和热跟踪的ListView。在用户单击该项和触发事件之间似乎有大约2秒钟的延迟。有没有一种方法可以让事件在用户单击时立即触发?

    2 回复  |  直到 15 年前
        1
  •  4
  •   invert    15 年前

    我找不到方法来改变这个延迟,这是一个内置的设置。

    问题是,mousedown事件实际上有延迟的反应,只设置了selecteditems属性 之后 它开火了。

    您必须手动执行此操作:使用mouseclick事件。如果单击某个项目,即使该项目已被选中,也会触发此操作。它将 单击空白区域时激发。

    Private Sub list_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles list.MouseClick
        Dim item As ListViewItem = list.GetItemAt(e.X, e.Y)
        If Not IsNothing(item) Then
            do your stuff here
        End If
    End Sub
    

    您可以通过处理此事件来模拟热跟踪

    Private Sub list_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles list.MouseMove
        Dim item As ListViewItem = list.GetItemAt(e.X, e.Y)
        If Not IsNothing(item) Then
            list.SelectedItems.Clear()
            item.Selected = True
        End If
    End Sub
    
        2
  •  0
  •   P-L    15 年前

    是,请改用SelectedIndexChanged事件!