写了一段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
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