相信很多编程爱好者都使用过网络蚂蚁或 FoxMail 软件,其软件运行主界面的左侧有一显示等级结构的树状外观控件,不仅美观大方,而且非常方便使用。其实,在 VB 中利用 Treeview 控件很容易就能编写出同样效果的程序。 首先在 VB 中建立一个新工程,单击“工程/部件”,在控件列表中选中“ Microsoft Windows command controls6.0(sp4)”,按下“确定”按钮返回主界面,在左侧控件窗体中选中 Treeview 控件置于窗体上,再放置一个 Imagelist 控件、两个 Label 控件、两个Textbox 控件、六个 commandbutton 控件,其属性分别如下: Treeview 控件:名称 Treeview1; Imagelist 控件:名称 Imagelist1,并在该控件中放置三张个性图片(32×32),建立索引1、2、3;(方法:在Imagelist 控件上单击鼠标右键选择属性) Label 控件:名称分别为Lab(0)、Lab(1),Caption分别为“父节点:”、“子节点:”; Textbox 控件:名称分别为Txt(0)、Txt(1),text都为“”; commandbutton 控件:名称为系统默认,Caption分别为“添加”、“展开”、“收起”、“排序”、“删除”、“退出”; 将下列代码加入到代码框:Option Explicit Dim I As Integer Dim J As Integer Dim nodx As Node Dim CunZai As Boolean '定义变量 Private Sub Command1_Click() If Txt(0).Text <> "" And Txt(1).Text <> "" Then '不允许建立零字节的父节点和子节点 CunZai = False J = TreeView1.Nodes.Count For I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在 If TreeView1.SelectedItem.Children > 0 Then If Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = True End If Next I If CunZai = True Then '若存在, 则在父节点下建立子节点 Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J, Txt(1).Text, 3) Else ,若不存在,则建立父节点和子节点 Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1) Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,_ Txt(1).Text, 3) End If TreeView1.Refresh ElseIf Txt(0).Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!" '系统提示 ElseIf Txt(1).Text = "" Then MsgBox "请输入子节点名称!", vbInformation, "警告!" End If End SubPrivate Sub Command2_Click() For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = True '展开所有节点 Next I End SubPrivate Sub Command3_Click() For I = 1 To TreeView1.Nodes.Count TreeView1.Nodes(I).Expanded = False '收起所有节点 Next I End SubPrivate Sub Command4_Click() TreeView1.Sorted = True '排列顺序 End SubPrivate Sub Command5_Click() If TreeView1.SelectedItem.Index <> 1 Then TreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点 End If End SubPrivate Sub Command6_Click() End '退出程序 End SubPrivate Sub Form_Load() TreeView1.LineStyle =TvwTreeLines '在兄弟节点和父节点之间显示线 TreeView1.ImageList = ImageList1 '链接图像列 TreeView1.Style = tvwTreelinesPlusMinusPictureText '树状外观包含全部元素 Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1) '建立名称为"蒲子明"的父节点,选择索引为1的图像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3) '在"蒲子明"父节点下建立"收件箱"子节点,选择索引为3的图像 Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3) '在"蒲子明"父节点下建立"发件箱"子节点,选择索引为3的图像 CunZai = False End SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node) Node.ExpandedImage = 2 '节点被展开时,选择索引为2的图像 End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点,0为无 For I = 1 To TreeView1.Nodes.Count If TreeView1.Nodes(I).Selected Then MsgBox "您选择的是:“" & TreeView1.Nodes(I).FullPath & "”子节点!" '系统提示 End If Next I End If End Sub
' If Node.Children > 0 And Node.Key <> "r" Then If Node.Children > 0 Then Set chl = Node.Child.FirstSibling While Not chl Is Nothing ListView1.ListItems.Add , , chl.Text, chl.Image Set chl = chl.Next Wend Else ListView1.ListItems.Add , , Node.Text, Node.Image End IfEnd Sub
Microsoft Windows command controls6.0(sp4)”,按下“确定”按钮返回主界面,在左侧控件窗体中选中 Treeview 控件置于窗体上,再放置一个 Imagelist 控件、两个 Label 控件、两个Textbox 控件、六个 commandbutton 控件,其属性分别如下: Treeview 控件:名称 Treeview1; Imagelist 控件:名称 Imagelist1,并在该控件中放置三张个性图片(32×32),建立索引1、2、3;(方法:在Imagelist 控件上单击鼠标右键选择属性) Label 控件:名称分别为Lab(0)、Lab(1),Caption分别为“父节点:”、“子节点:”; Textbox 控件:名称分别为Txt(0)、Txt(1),text都为“”; commandbutton 控件:名称为系统默认,Caption分别为“添加”、“展开”、“收起”、“排序”、“删除”、“退出”; 将下列代码加入到代码框:Option Explicit Dim I As Integer
Dim J As Integer
Dim nodx As Node
Dim CunZai As Boolean '定义变量
Private Sub Command1_Click()
If Txt(0).Text <> "" And Txt(1).Text <> "" Then '不允许建立零字节的父节点和子节点
CunZai = False
J = TreeView1.Nodes.Count
For I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在
If TreeView1.SelectedItem.Children > 0 Then
If Txt(0).Text = TreeView1.Nodes(I).Text Then CunZai = True
End If
Next I
If CunZai = True Then '若存在, 则在父节点下建立子节点
Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,
Txt(1).Text, 3)
Else ,若不存在,则建立父节点和子节点
Set nodx = TreeView1.Nodes.Add(, , Txt(0).Text, Txt(0).Text, 1)
Set nodx = TreeView1.Nodes.Add(Txt(0).Text, tvwChild, "child" & J,_
Txt(1).Text, 3)
End If
TreeView1.Refresh
ElseIf Txt(0).Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!"
'系统提示
ElseIf Txt(1).Text = "" Then MsgBox "请输入子节点名称!", vbInformation, "警告!"
End If
End SubPrivate Sub Command2_Click()
For I = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(I).Expanded = True '展开所有节点
Next I
End SubPrivate Sub Command3_Click()
For I = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(I).Expanded = False '收起所有节点
Next I
End SubPrivate Sub Command4_Click()
TreeView1.Sorted = True '排列顺序
End SubPrivate Sub Command5_Click()
If TreeView1.SelectedItem.Index <> 1 Then
TreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点
End If
End SubPrivate Sub Command6_Click()
End '退出程序
End SubPrivate Sub Form_Load()
TreeView1.LineStyle =TvwTreeLines '在兄弟节点和父节点之间显示线
TreeView1.ImageList = ImageList1 '链接图像列
TreeView1.Style = tvwTreelinesPlusMinusPictureText
'树状外观包含全部元素
Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1)
'建立名称为"蒲子明"的父节点,选择索引为1的图像
Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3)
'在"蒲子明"父节点下建立"收件箱"子节点,选择索引为3的图像
Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3)
'在"蒲子明"父节点下建立"发件箱"子节点,选择索引为3的图像
CunZai = False
End SubPrivate Sub TreeView1_Expand(ByVal Node As MSComctlLib.Node)
Node.ExpandedImage = 2 '节点被展开时,选择索引为2的图像
End SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
If TreeView1.SelectedItem.Children = 0 Then '检查是否有子节点,0为无
For I = 1 To TreeView1.Nodes.Count
If TreeView1.Nodes(I).Selected Then
MsgBox "您选择的是:“" & TreeView1.Nodes(I).FullPath & "”子节点!"
'系统提示
End If
Next I
End If
End Sub
'新建一个窗体,上面放一个TreeView和一个ListView,一个ListImage
'ListImage控件要添加8张以上一样大小的icon文件
'TreeView1和ListView的图像列表都设置成ListImage1
Private Sub Form_Load()
TreeView1.Style = tvwTreelinesPlusMinusPictureText
TreeView1.LabelEdit = tvwManual
TreeView1.Checkboxes = True
ListView1.View = lvwIcon
ListView1.BorderStyle = ccFixedSingleTreeView1.Nodes.Add , , "r", "学籍管理信息系统", 1
TreeView1.Nodes.Add "r", tvwChild, "r1", "学生基本信息", 2
TreeView1.Nodes.Add "r1", tvwChild, "r11", "个人信息", 3
TreeView1.Nodes.Add "r1", tvwChild, "r12", "家庭信息", 3
TreeView1.Nodes.Add "r", tvwChild, "r2", "学习成绩", 4
TreeView1.Nodes.Add "r2", tvwChild, "r21", "专业成绩", 5
TreeView1.Nodes.Add "r2", tvwChild, "r22", "英语成绩", 5
TreeView1.Nodes.Add "r", tvwChild, "r3", "社团活动", 6
TreeView1.Nodes.Add "r3", tvwChild, "r31", "政治面貌", 7
TreeView1.Nodes.Add "r3", tvwChild, "r32", "获奖情况", 7
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Expanded = True
Next iEnd SubPrivate Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) Dim chl As Node
ListView1.ListItems.Clear
' If Node.Children > 0 And Node.Key <> "r" Then
If Node.Children > 0 Then
Set chl = Node.Child.FirstSibling
While Not chl Is Nothing
ListView1.ListItems.Add , , chl.Text, chl.Image
Set chl = chl.Next
Wend
Else
ListView1.ListItems.Add , , Node.Text, Node.Image
End IfEnd Sub
怎么生成节点,看一下msdn