首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB中Listview控件如何样让鼠标移动时不展开与收起

2013-08-01 
VB中Listview控件怎么样让鼠标移动时不展开与收起?首先我是想当鼠标移到节点上时指针变成手形,不在节点上

VB中Listview控件怎么样让鼠标移动时不展开与收起?
首先我是想当鼠标移到节点上时指针变成手形,不在节点上时是箭头,所以用了下面的一段代码:

Private Sub FileList_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Set FileList.SelectedItem = FileList.HitTest(x, y)
    If FileList.SelectedItem Is Nothing Then
        FileList.MousePointer = 0
    Else
        FileList.MousePointer = 99
    End If
End Sub

下面这段代码在有子节点的时候好像都用不上。
Private Sub FileList_NodeClick(ByVal Node As MSComctlLib.Node)
    If FileList.SelectedItem Is Nothing Or FileList.SelectedItem.Children <> 0 Then Exit Sub
    IFP = IFL & FileList.SelectedItem.FullPath
    InfoFiles IFP, "*.*"
End Sub

但是这样之后麻烦也跟着来了,就是当鼠标移到节点时会自动展开这个节点的子节点,一移开又收起了这个节点的子节点,很苦恼的是想要展开的时候很方便,但是不想要收起的时候吧总是会一不小心移开了被收起。
请问大家可以在哪设置或是有什么代码解决这个问题。 listview 鼠标
[解决办法]
你直接设置HotTracking属性为True不就可以了,干嘛弄那么复杂?
还有你说的应该是 TreeView1 吧,Listview 没什么节点展开的呀。
[解决办法]
本来你你用处理 MouseMove 事件直接把 HotTracking 属性为 True 就搞定的事情为什么要画蛇添足呢?当然,你也可以通过设置 Expanded 属性来控制节点是否为展开,如:

Private Sub TreeView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim nodeobj As Node
    Dim exState As Boolean
    Set nodeobj = TreeView1.HitTest(x, y)
    If Not nodeobj Is Nothing Then
        exState = nodeobj.Expanded                  ' 先记录原始节点的状态
        Set TreeView1.SelectedItem = nodeobj        ' 设置节点为选择


        TreeView1.SelectedItem.Expanded = exState   ' 无论是否展开,都保持原始的状态
        TreeView1.MousePointer = 99
    Else
        TreeView1.MousePointer = 0
    End If
End Sub

热点排行