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