treeview复选框操作鸡毛加急!急盼高人指点

qian21h 2008-02-25 04:06:48
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
On Error Resume Next
Dim TV As Integer '计数
'Dim SY() As Integer '索引记录
'ReDim SY(5)
'TV = 0
If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点
For i = 1 To TreeView1.Nodes.Count
If TreeView1.Nodes(i).Checked = True Then
TV = TV + 1
If TV > 5 Then
''如何写呢
End If
MsgBox "您选择的是:“" & TreeView1.Nodes(i).FullPath & "”子节点! '系统提示"
''MsgBox TV
End If
Next i
End If
End Sub
treeview表是这样的:
ID号
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
数据前面都有个复选框
现在当复选框大于5个的时候
那么最前的复选框失效,刚点的有效

比如现在刚开始选的是 2 6 5 4 3
点 7
点 8
去掉的是 2 6 就是5 4 3 7 8
先入先出排序
谢谢各位了
...全文
86 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qian21h 2008-02-28
  • 打赏
  • 举报
回复
再次感谢,结贴了,非常感谢
qian21h 2008-02-27
  • 打赏
  • 举报
回复
大奇能否再半个忙
现在我定义了一个数组来保存我点击节点的ID号
Dim TreeV(5) As Integer
Private Sub nodesSelect(tre As Control, Index As Integer)
Dim i, j As Integer
Queue.Remove 1
Queue.Add Index
For i = 1 To tre.Nodes.Count
tre.Nodes(i).Checked = False
Next i
For i = 1 To tre.Nodes.Count
For j = 1 To 5
If i = CInt(Queue.Item(j)) Then
tre.Nodes(i).Checked = True
如何保存我点击节点的ID号呢
TreeV(1) = tre.Nodes(i)
TreeV(2) = tre.Nodes(i) + 1
TreeV(3) = tre.Nodes(i) + 2
TreeV(4) = tre.Nodes(i) + 3
TreeV(5) = tre.Nodes(i) + 4
End If
Next j
Next i
End Sub
万分感谢
qian21h 2008-02-27
  • 打赏
  • 举报
回复
大奇,哥们你真强啊,厉害,初步问题解决了,还有就是数据连接的问题了,我先看看,稍会再来感谢你
lqq7072000 2008-02-27
  • 打赏
  • 举报
回复
呵呵,不客气!
如果你是指treeview已经选中的节点的索引,那它就保存在Queue.Item(j),1<=j<=5.
如果不是的话,我猜想你的ID号是放在treeview.Nodes(j).Key中的
Dim TreeV(1 to 5) As Integer
If i=CInt(Queue.Item(j)) Then
tre.Nodes(i).Checked=True
'如何保存我点击节点的ID号呢
TreeV(j) = cint(val(tre.Nodes(i).key)) '加上这句
End If
嗷嗷叫的老马 2008-02-26
  • 打赏
  • 举报
回复
汗.....
lqq7072000 2008-02-26
  • 打赏
  • 举报
回复
试一试这个

Dim Queue As New Collection '队列

Private Sub Form_Load() '在form中初始化队列数据结构
intitQueue
end sub

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
nodesSelect TreeView1, Node.Index
End Sub

以下是两个自定义函数
'初始化先进先出对列
Private Sub intitQueue()
Dim i As Integer
For i = 1 To 5
Queue.Add 0
Next i
End Sub
'多选节点
'tre:treeview控件名;index:当前选中Node的索引
Private Sub nodesSelect(tre As Control, Index As Integer)
Dim i, j As Integer
Queue.Remove 1
Queue.Add Index
For i = 1 To tre.Nodes.Count
tre.Nodes(i).Checked = False
Next i
For i = 1 To tre.Nodes.Count
For j = 1 To 5
If i = CInt(Queue.Item(j)) Then
tre.Nodes(i).Checked = True
End If
Next j
Next i
End Sub
qian21h 2008-02-26
  • 打赏
  • 举报
回复
顶个给个安慰啊
qian21h 2008-02-25
  • 打赏
  • 举报
回复
各位给个安慰顶个也可以啊

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧