是不是一定要先放一个Textbox控件,把该控件移动到要重命名的结点上,在Textbox上改名,然后Treeview.selectitem.text=text1.text呢

解决方案 »

  1.   

    treeview1.LabelEdit =tvwAutomatic
      

  2.   

    写了一段Option Explicit
    Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Const EM_LIMITTEXT = &HC5
    Const TV_FIRST As Long = &H1100
    Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
    Const TVM_GETEDITCONTROL As Long = (TV_FIRST + 15)
    Private Sub Command1_Click()
    MsgBox TreeView1.SelectedItem.Text
    End SubPrivate Sub Command2_Click()
    '重命名按钮
    TreeView1.StartLabelEdit '自动处于编辑状态
    End SubPrivate Sub Form_Load()
    TreeView1.Nodes.Add , , "root", "root"
    TreeView1.Nodes.Add "root", tvwChild, , "child1"
    TreeView1.Nodes.Add "root", tvwChild, , "child2"
    TreeView1.Nodes.Add "root", tvwChild, , "child3"
    TreeView1.Nodes.Add "root", tvwChild, , "child4"
    TreeView1.Nodes.Add "root", tvwChild, , "child5"TreeView1.Nodes("root").Expanded = True
    End Sub'treeview1.LabelEdit =tvwAutomatic
    '主要对treeview的BeforeLabelEdit,AfterLabelEdit事编程
    Private Sub TreeView1_AfterLabelEdit(Cancel As Integer, NewString As String)
    On Error GoTo vbErrorHandler    If Len(NewString) = 0 Then
            MsgBox "你必须输入一个名称"
            Cancel = True
            Exit Sub
        End If
        
        Exit SubvbErrorHandler:    MsgBox Err.Number & " " & Err.DescriptionEnd SubPrivate Sub TreeView1_BeforeLabelEdit(Cancel As Integer)
       Dim lEditHWND As Long
       '得到treeview上编辑框的句柄
       lEditHWND = SendMessageLong(TreeView1.hwnd, TVM_GETEDITCONTROL, 0, 0)
    ' 限制到20个字符
        If lEditHWND > 0 Then
            SendMessageLong lEditHWND, EM_LIMITTEXT, 20, 0
        End If
        
    End Sub