vb中treeview控件里怎样实现右键删除子菜单,添加子菜单,重命名,换图标等功能

解决方案 »

  1.   

    http://hi.baidu.com/lilac_sang/blog/item/0bea93de0eb7f459cdbf1a7e.html百度/谷歌 搜索   
    关键字    treeview 控件的用法 vb
      

  2.   

    Private   Sub   TreeView1_MouseUp(Button   As   Integer,   Shift   As   Integer,   x   As   Single,   y   As   Single)   
      If   Button   =   vbRightButton   Then   
            If   TreeView1.SelectedItem   Is   TreeView1.HitTest(x,   y)   Then   
                  menuPopupItem.Caption   =   TreeView1.SelectedItem.Text   
                  Me.PopupMenu   menuPopup   
            End   If   
      End   If   
      End   Sub
      

  3.   

    1.编辑一个菜单(菜单项设置为添加、删除、重命名、更换图标),各个菜单项下面写代码
    2.右击treeview的时候 ,用PopupMenu方法弹出菜单
    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single)
        If Button <> 2 Then Exit Sub
    '    PopupMenu 菜单名称
    End Sub
    3.添加,删除,重命名,更换图标
    TreeView1.Nodes.Add(relative, relationship, key, text, image, selectedimage)
    TreeView1.Nodes.Remove (Index)
    TreeView1.LabelEdit =tvwAutomatic 
    TreeView1.Nodes(Index).Image = "imagelist中的关键字或者序号"
      

  4.   

    Option ExplicitDim I As Integer
    Dim J As Integer
    Dim nodx As Node
    Dim CunZai As Boolean '定义变量
    Private Sub Command1_Click()
      If Text1.Text <> "" And Text2.Text <> "" Then '不允许建立零字节的父节点和子节点
        CunZai = False
        J = TreeView1.Nodes.Count
        For I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在
          If TreeView1.SelectedItem.Children > 0 Then
            If Text1.Text = TreeView1.Nodes(I).Text Then CunZai = True
            End If
        Next I
        If CunZai = True Then '若存在, 则在父节点下建立子节点
          Set nodx = TreeView1.Nodes.Add(Text1.Text, tvwChild, "child" & J, _
                                 Text2.Text, 3)
          Else                   '若不存在,则建立父节点和子节点
          Set nodx = TreeView1.Nodes.Add(, , Text1.Text, Text1.Text, 1)
          Set nodx = TreeView1.Nodes.Add(Text1.Text, tvwChild, "child" & J, _
                        Text2.Text, 3)
        End If
        TreeView1.Refresh
      ElseIf Text1.Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!"
       '系统提示
      ElseIf Text2.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
      

  5.   

    给你一个删除的例子,其他照做'弹出菜单
    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
      If Button = vbRightButton Then
            If TreeView1.SelectedItem Is TreeView1.HitTest(x, y) Then
                  Me.PopupMenu menuPopup
            End If
      End If
    End Sub'删除选定的节点
    Private Sub mnut1_Click()
      If TreeView1.SelectedItem.Index <> 1 Then
        TreeView1.Nodes.Remove TreeView1.SelectedItem.Index 
      End If
    End Sub
      

  6.   

    建菜单会了吗?按Ctrl+E键,弹出菜单编辑器。在那里面可以编辑菜单。 
    标题:等同于Command的Caption属性,就是用来显示菜单上的文字。 
    名称:等同于Command的Nane属性,指定菜单的名称。 
    索引:菜单数组的下标。 
    复选:以复选框的样式显示菜单。 
    有效:Enabled 
    可见:Visible 
    →按钮:选定的菜单项退一级 
    ←按钮:选定的菜单项向上一级 
    ↑按钮:选定的菜单项向上移动 
    ↓按钮:选定的菜单项向下移动 先输入菜单第一项的标题"文件"和名称"file",按你的要求,程序运行时不显示,那么就把它的"可见"勾上。 
    再输入菜单第二项的标题"打开"和名称"open",因为它是在"文件"菜单的下一级,所以按一下"→按钮" 
    最后输入菜单第三项的标题"保存"和名称"save",不用按按"→按钮".确定完成菜单的编辑. 
      

  7.   

    删除 这项名称是什么?我用mnut1(红色的),换成你自己的Private Sub mnut1_Click()
      If TreeView1.SelectedItem.Index <> 1 Then
        TreeView1.Nodes.Remove TreeView1.SelectedItem.Index 
      End If
    End Sub
      

  8.   

    我用cut   我来试试
      

  9.   

    不行  出现对性变量或with块变量未设置
      

  10.   

    Private Sub cut_Click()
    If TreeView1.SelectedItem.Index <> 1 Then    TreeView1.Nodes.Remove TreeView1.SelectedItem.Index
      End IfEnd Sub
      

  11.   

    你的TreeView控件的名称是什么?不是TreeView1吗?
    我是从你的代码Private Sub Command5_Click() 
      If TreeView1.SelectedItem.Index <> 1 Then 
        TreeView1.Nodes.Remove TreeView1.SelectedItem.Index '删除选定的节点 
      End If 
    End Sub 
    改的这个代码没运行过吗?
      

  12.   

    是这样的啊  可是这饿删除怎么不行啊啊?
      出现对象变量或with块变量未设置
    我上面的按钮可以运行啊
      

  13.   

    '弹出菜单
    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
      If Button = vbRightButton Then
            If TreeView1.SelectedItem Is TreeView1.HitTest(x, y) Then
                  Me.PopupMenu menuPopup
            End If
      End If
    End Sub这个代码加了吗?是加我这个吗?
      

  14.   

    Option ExplicitDim I As Integer
    Dim J As Integer
    Dim nodx As Node
    Dim CunZai As Boolean '定义变量
    Private Sub Command1_Click()
      If Text1.Text <> "" And Text2.Text <> "" Then '不允许建立零字节的父节点和子节点
        CunZai = False
        J = TreeView1.Nodes.Count
        For I = 1 To TreeView1.Nodes.Count '检查新输入的父节点名称是否存在
         If TreeView1.SelectedItem.Children > 0 Then
          If Text1.Text = TreeView1.Nodes(I).Text Then CunZai = True
            End If
        Next I
        If CunZai = True Then '若存在, 则在父节点下建立子节点
          Set nodx = TreeView1.Nodes.add(Text1.Text, tvwChild, "child" & J, _
                                Text2.Text, 3)
          Else                  '若不存在,则建立父节点和子节点
          Set nodx = TreeView1.Nodes.add(, , Text1.Text, Text1.Text, 1)
          Set nodx = TreeView1.Nodes.add(Text1.Text, tvwChild, "child" & J, _
                        Text2.Text, 3)
        End If
        TreeView1.Refresh
      ElseIf Text1.Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!"
      '系统提示
      ElseIf Text2.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'弹出菜单
    Private Sub TreeView1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
      If Button = vbRightButton Then
            If TreeView1.SelectedItem Is TreeView1.HitTest(x, y) Then
                  Me.PopupMenu menuPopup
            End If
      End If
    End Sub'删除选定的节点
    Private Sub cut_Click()
      If TreeView1.SelectedItem.Index <> 1 Then
        TreeView1.Nodes.Remove TreeView1.SelectedItem.Index
      End If
    End Sub
    我现在的代码  大哥你看看啊