你怎么能以编程方式判断是否在.NET ListView中单击了一个组头?

时间:2010-02-17 15:06:59

标签: c# .net

我们要做的是确定是否已单击组标题,例如“Vista / 7”屏幕上“我的电脑”中的“硬盘驱动器”或“带可移动存储的设备”标题。这必须在XP中工作。

我们可以检测到鼠标在该区域的时间,然后捕获点击,但我们想知道是否存在特定事件。

2 个答案:

答案 0 :(得分:1)

有一篇文章实现了一个自定义的ListView控件,我相信作者已经解决了点击一个组here的问题。还有另一个article显示点击了哪个标题虽然我不是100%自信,如果它是在组标题的上下文中......但我想它对于组标题将是相同的原则..

希望这有帮助, 最好的祝福, 汤姆。

答案 1 :(得分:0)

这是我使用的,希望它会有所帮助:

   Private Sub ListView1_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles ListView1.PreviewMouseDown

    If e.LeftButton = MouseButtonState.Pressed Then

        Dim pt As Point = e.GetPosition(Me)
        Dim ListViewComponent As Object = System.Windows.Media.VisualTreeHelper.HitTest(Me, pt)
        If ListViewComponent.visualhit.ToString = "System.Windows.Controls.Border" Then
            ' mouse down event was on header row  
        Else
            ' mouse down event was not on the header row  
        End If
        ListViewComponent = Nothing
        pt = Nothing

    End If

End Sub