阻止取消选择ListView

时间:2014-02-06 14:23:30

标签: vb.net listview select

目标

如果列表视图中有1个或更多项目,并且用户单击ListView的空白区域,则所选项目应保持选中状态。

换句话说,如果选择了某个项目,除非选择了其他项目,否则它应保持选中状态。

现状

我将ListView HideSelection的属性设置为false,这将使控件失去焦点时选定的ListViewItem保持选中状态。但是,当我单击Listview的空白时,这不能解决问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您可以通过继承ListView

来实现这一目标
Public Class UIListView
    Inherits ListView

    Private Sub WmLButtonDown(ByRef m As Message)
        Dim pt As Point = New Point(m.LParam.ToInt32())
        Dim ht As ListViewHitTestInfo = Me.HitTest(pt)
        If (ht.Item Is Nothing) Then
            m.Result = IntPtr.Zero
        Else
            MyBase.WndProc(m)
        End If
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case WM_LBUTTONDOWN
                Me.WmLButtonDown(m)
                Exit Select
            Case Else
                MyBase.WndProc(m)
                Exit Select
        End Select
    End Sub

    Private Const WM_LBUTTONDOWN As Integer = &H201

End Class