treeview的节点编辑

whjwsy 2004-08-24 01:30:29
如何用代码让treeview的一个节点进入编辑状态?
...全文
339 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinall 2004-09-22
  • 打赏
  • 举报
回复
楼上各位方法都很不错,^_^
ryuginka 2004-09-22
  • 打赏
  • 举报
回复
up
jam021 2004-09-22
  • 打赏
  • 举报
回复
学习,帮顶!
junki 2004-09-21
  • 打赏
  • 举报
回复
如果只是纯粹的修改节点的名称的话,
用TreeView1.StartLabelEdit就可以了
如果在你关闭程序之后还继续有效,那就考虑
重新编程,将它的Text值改变
starsoulxp 2004-09-09
  • 打赏
  • 举报
回复
TreeView1.StartLabelEdit '自动处于编辑状态
LGYAN 2004-08-24
  • 打赏
  • 举报
回复
注:在程序中使该节点可编辑的话,先要设置Treeview的当前节点为该节点。
然后再使用TreeView1.StartLabelEdit

若要使别的节点不能编辑,可以在编辑该节点前,设置Tree.LabelEdit = tvwAutomatic
在编辑该节点后,使用Tree.LabelEdit = tvwManual
LGYAN 2004-08-24
  • 打赏
  • 举报
回复
使用
StartLabelEdit 方法


允许用户编辑标签。

语法

object.StartLabelEdit

object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。

说明

当 LabelEdit 属性设置为 1(手动)时,必须用 StartLabelEdit 方法来启动一标签编辑操作。

在一对象上调用 StartLabelEdit 方法时,BeforeLabelEdit 事件也同时发生。
fishmans 2004-08-24
  • 打赏
  • 举报
回复
还可以用一个textbox框摸拟,这样的好处是可以针对某个节点进编辑,而别的节点不能编辑的效果
cpio 2004-08-24
  • 打赏
  • 举报
回复
用TreeView1.StartLabelEdit就可以了

可以通过判断按下了F2调动它
online 2004-08-24
  • 打赏
  • 举报
回复
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 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


Private Sub Command2_Click()
TreeView1.StartLabelEdit '自动处于编辑状态
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

Dim i As Long

For i = 1 To TreeView1.Nodes.Count
If TreeView1.Nodes(i).Text = NewString Then
MsgBox "结点已经存在!", vbExclamation
TreeView1.StartLabelEdit
Exit Sub
End If
Next

Exit Sub

vbErrorHandler:

MsgBox Err.Number & " " & Err.Description

End Sub

Private 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

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧