控件treeview中是如何区分父节点和子节点的
如果是这样的形式
-班级1
-学生1
-学生2
-班级2
-学生3
我想在点了"班级1"或"班级2"时,出现班级的信息;
点了学生后出现学生的信息。
谢谢,指教!
问题点数:100、回复次数:17Top
1 楼rainstormmaster(暴风雨 v2.0)回复于 2003-09-02 23:42:15 得分 100
一个treeview,一个textbox,思路为:添加节点时指明其节点的tag,点击时根据tag属性判断点击的是哪一类节点:
Option Explicit
Private Sub Form_Load()
Dim mnode As Node, nnode As Node
Set mnode = Me.TreeView1.Nodes.Add(, , , "班级1")
mnode.Tag = "班级"
mnode.Expanded = True
Set nnode = Me.TreeView1.Nodes.Add(mnode, tvwChild, , "同学1")
nnode.Tag = "同学"
Set nnode = Me.TreeView1.Nodes.Add(mnode, tvwChild, , "同学2")
nnode.Tag = "同学"
Set mnode = Me.TreeView1.Nodes.Add(, , , "班级2")
mnode.Tag = "班级"
mnode.Expanded = True
Set nnode = Me.TreeView1.Nodes.Add(mnode, tvwChild, , "同学3")
nnode.Tag = "同学"
Set nnode = Me.TreeView1.Nodes.Add(mnode, tvwChild, , "同学4")
nnode.Tag = "同学"
End Sub
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Select Case Node.Tag
Case "班级"
Text1.Text = "你点击的是一个班级,班级名称为" + Node.Text
Case "同学"
Text1.Text = "你点击的是一个同学,该同学来自" + Node.Parent.Text + "姓名为:" + Node.Text
End Select
End Sub
Top
2 楼northwolves(狼行天下)回复于 2003-09-03 00:08:19 得分 0
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Select Case Left(Node.Text, 2)
Case "班级"
MsgBox "你点击的是一个班级,班级名称为 " + Node.Text
Case "同学"
MsgBox "你点击的是一个同学,该同学来自 " + Node.Parent.Text + ",姓名为:" + Node.Text
End Select
End Sub
Top
3 楼rainstormmaster(暴风雨 v2.0)回复于 2003-09-03 00:15:52 得分 0
to northwolves(野性的呼唤):
不赞成使用node.text进行判定,原因是,如果把班级1、2换成具体的班级,则无法判断,如下面的形式:
-高二(3)班
-高兴
-刘备
-初三(4)班
-张飞
Top
4 楼xuwuyu(飘渺风)回复于 2003-09-03 00:21:22 得分 0
我的做法是判断一个结点的parent是不是存在,如:if MyNodes.parent is nothing then ......呵呵,这个方法我感觉是最好的!Top
5 楼hxy2003(asfd)回复于 2003-09-03 09:38:10 得分 0
用child的就是不是主键啊。Top
6 楼hc_z(石泉)回复于 2003-09-03 10:13:17 得分 0
每个节点都有唯一的key值呀。在TreeView1_NodeClick中判断节点是什么就行了嘛。你想干什么就什么。
Top
7 楼yijiansong(不知路在何方)回复于 2003-09-03 11:06:34 得分 0
判断一个结点的parent是不是存在,如:if MyNodes.parent is nothing thenTop
8 楼junki(『.NET技术争霸天下』)回复于 2003-09-03 18:16:26 得分 0
先肯定要判断一个结点的parent是不是存在,如:
if MyNodes.parent is nothing then
然后再进行操作,如上面所述的代码
……Top
9 楼hxy1982(农夫三拳有点甜)回复于 2003-09-03 18:52:55 得分 0
upTop
10 楼Gelim(Gelim)回复于 2003-09-04 01:34:23 得分 0
我也是这个想法,就是判断它的parent是不是nothing.Top
11 楼hongsongboy(红松)回复于 2003-09-04 08:25:19 得分 0
if TreeView1.SelectedItem.Children=0 then
说明为子节点
else
说明为父节点
end ifTop
12 楼dustwoo(尘)回复于 2003-09-04 09:23:21 得分 0
我觉得还是 rainstormmaster(rainstormmaster) 的方法比较好
要不然如果有三层或以上的话,好像就比较麻烦,对吗。Top
13 楼flinming(flinming)回复于 2003-09-04 09:33:31 得分 0
判断如果他有子项的话,一定是父项了Top
14 楼tgc19810107(城市包围农村)回复于 2003-09-04 12:46:44 得分 0
up
谢谢兄弟们的招,把我也弄懂了.Top
15 楼dwdali(Whisky)回复于 2003-09-07 20:20:02 得分 0
呵呵 我也懂了^_^Top
16 楼efsnake(八蛇)回复于 2003-09-07 20:42:55 得分 0
不知道你的子接点和父接点是怎么理解的?子和父是相对的关系,除了顶层接点,其他的每个接点都有自己的子接点和父接点。如
-班级1
-学生1
-语文
班级1是学生1的父接点,而学生1是语文的父接点,语文是学生1的子接点,学生1的子接点。
你所说的问题应该用Node.Key属性来解决,在创建的时候给每一个接点指定一个唯一的KEY,其中包含你所需要的信息。在Node_NodeClick事件中判断KEY就可以了三。这跟子接点和父接点无关的。Top
17 楼little_sophy(晓晓)回复于 2003-09-08 12:27:25 得分 0
同意 rainstormmaster(rainstormmaster) :
添加节点时,明确指定tag属性,为什么不是key属性呢,因为key属性各个节点都是唯一的,但是tag属性不是的,你可以把一种类型的节点的tag都设置为一样的,例如班级的tag是一样的,学生的tag是一样的。
然后在TreeView1_NodeClick事件中进行判断。Top




