教学管理
|
|---计算机科学系统
|
|
|---教学经费
|
|---信息系
|---建筑系
|------机电系
===============================================================
在上面的TreeView中,我如何可以实现按住"Ctrl"键,把信息系,建筑系,机电系
同时选中呢??? 按住"Shift"建,点信息系,再点一下机电系,也会把信息系,机
电系,建筑系选中呢?谢谢,在线等
|
|---计算机科学系统
|
|
|---教学经费
|
|---信息系
|---建筑系
|------机电系
===============================================================
在上面的TreeView中,我如何可以实现按住"Ctrl"键,把信息系,建筑系,机电系
同时选中呢??? 按住"Shift"建,点信息系,再点一下机电系,也会把信息系,机
电系,建筑系选中呢?谢谢,在线等
Public Enum NodeSelectionMode
None = 0 '正常模式
Ctrl = 1 'Ctrl模式
Shift = 2 'Shift模式
End Enum
Dim m_SelectionMode As NodeSelectionMode然后在Treeview的KeyDown中设置模式,KeyUp中重置模式如下:
Private Sub TreeView1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyControl Then
m_SelectionMode = m_Ctrl
ElseIf KeyCode = vbKeyShift Then
m_SelectionMode = sm_Shift
Else
m_SelectionMode = sm_None
End If
End Sub
Private Sub TreeView1_KeyUp(KeyCode As Integer, Shift As Integer)
m_SelectionMode = sm_None
End Sub最后在NodeClick中根据模式设定进行节点选择
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
dim i as integer
Select Case m_SelectionMode
Case sm_None
'将其他节点设置为未选中,并更改前景和背景色
For i = 0 To TreeView1.Nodes.Count
If TreeView1.Nodes(i) <> Node Then
TreeView1.Nodes(i).Selected = False
TreeView1.Nodes(i).ForeColor = VBRUN.ColorConstants.vbBlack
TreeView1.Nodes(i).BackColor = VBRUN.ColorConstants.vbWhite
End If
Next i
Node.BackColor = &H8000000D
Case sm_Ctrl
If Node.BackColor <> &H8000000D Then
TreeView1.Nodes(Node.Key).ForeColor = vbWhite
TreeView1.Nodes(Node.Key).BackColor = &H8000000D
Else
'如果点击选中的节点,则取消选中
TreeView1.Nodes(Node.Key).ForeColor = vbBlack
TreeView1.Nodes(Node.Key).BackColor = vbWhite
Node.Selected = True
End If
Case sm_Shift
一个For循环,选中节点......
case else
End Select
End Sub具体代码不多写了,我想你也应该明白怎么处理了吧.