右击treeview修改,删除

来源:互联网 发布:信用卡代还app源码 编辑:程序博客网 时间:2024/06/05 03:08
右击treeview中某个节点的时候,可以弹出一个菜单,菜单中的内容为给改节点的操作,比如添加子节点,修改,删除,谁能给个源码,谢谢啦,分不够再加哈
________________________________________________________________
添加:(先在加一个contextMenu,再它的添加子菜单的click事件编程)  
  Try  
    ’使TreeView可以被编辑  
    TreeView1.LabelEdit   =   True  
    ‘判断你是不是选定的是不可编辑的节点,我这里工种节点不可以被编辑,只有工种下级的  
        各个工种名称可以被编辑  
    If   Trim(TreeView1.SelectedNode.Text)   =   "工种"   Then  
      ‘添加节点  
        AddNode   =   New   TreeNode("请输入新工种名字")  
        TreeView1.SelectedNode.Nodes.Add(AddNode)  
        TreeView1.ExpandAll()  
        AddNode.BeginEdit()  
        TreeView1.LabelEdit   =   True  
        NodeAdded   =   True  
    End   If  
  Catch   err   As   Exception  
    MsgBox(err.ToString)  
  End   Try  
   
  删除与添加类似,只是如果你的节点名字从其他处(如数据库)得来,那么你还需要更新数据库  
   
  编辑:  
  Private   Sub   TreeView1_BeforeLabelEdit(ByVal   sender   As   Object,   ByVal   e   As   System.Windows.Forms.NodeLabelEditEventArgs)   Handles   TreeView1.BeforeLabelEdit  
        TreeView1.LabelEdit   =   True     ‘使可以编辑  
        AddNode   =   TreeView1.SelectedNode  
  End   Sub  
   
  Private   Sub   TreeView1_AfterLabelEdit(ByVal   sender   As   Object,   ByVal   e   As   System.windows.Forms.NodeLabelEditEventArgs)   Handles   TreeView1.AfterLabelEdit  
  Try  
      ‘此时你改完了节点名字  
      TreeView1.SelectedNode.EndEdit(True)  
      If   e.Label   Is   Nothing   Then      
            'do   nothing  
      ElseIf   e.Node.Text   =   "工种"   Then     ‘工种不能改  
            e.CancelEdit()   =   True  
      ‘e.Node.Text   ,e.Label.ToString   一个是改前的名字一个是该后的名字,具体哪个对  
          哪个请查MSDN  
      ElseIf   Trim(e.Node.Text)   <>   "工种"   And   e.Node.Text   <>   e.Label.ToString   Then  
            If   MsgBox("此操作会导致当前工种中的所有人员的工种都被更改,是否确定?",   MsgBoxStyle.YesNo   +   MsgBoxStyle.Information,   "警告")   =   MsgBoxResult.Yes   Then  
              。。。。     ‘我的更改  
            MsgBox("更改成功!",   MsgBoxStyle.OKOnly,   "提示")  
            'Call   InitTree()       ‘有时要重新把treeview初始化一遍,视需求定  
            End   If  
  End   If  
  Catch   err   As   Exception  
      MsgBox(err.ToString)  
  End   Try  
  End   Sub  
  其他:  
  挡treeview得到焦点时你可以使用ContextMenu,反之ContextMenu禁用  
  Private   Sub   TreeView1_GotFocus(ByVal   sender   As   Object,   ByVal   e   As   System.EventArgs)   Handles   TreeView1.GotFocus  
      TreeView1.ContextMenu   =   ContextMenu1  
  End   Sub  
   
  Private   Sub   TreeView1_LostFocus(ByVal   sender   As   Object,   ByVal   e   As   System.EventArgs)   Handles   TreeView1.LostFocus  
        TreeView1.ContextMenu   =   Nothing  
  End   Sub  
   
  注意:这里没有在ContextMenu菜单添加“更改”项,而是直接更改:即左键单击节点表示  
  选中,再单击一下就可以编辑了,更改之后单击他处就完成更改,和你在windows中更改文  
  件名字相似。  
   
  你不能完全照抄代码,需要和你的具体要求作相应的更改。