方法一:
1 int nodeIndex = 0;
2 bool nodeChanged = false;
3
4 //右键点击,就进入修改状态
5 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
6 {
7 if (e.Button == MouseButtons.Right)
8 {
9 e.Node.BeginEdit();
10 }
11 }
12
13 private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
14 {
15 nodeIndex = e.Node.Index;
16 nodeChanged = true;
17
18 e.Node.EndEdit(true );
19 }
20
21 private void treeView1_NodeMouseHover(object sender, TreeNodeMouseHoverEventArgs e)
22 {
23 if (nodeChanged == true)
24 {
25 //在这里保存数据到数据库
26 MessageBox.Show(treeView1.Nodes[nodeIndex].Text);
27
28 nodeChanged = false;
29 }
30 }
方法二:
MouseClick和AfterLabelEdit的使用,treeView1.LabelEdit = true;这句不可缺少:
1 public Form1()
2 {
3 InitializeComponent();
4 this.Load+=new EventHandler(Form1_Load);
5 treeView1.MouseClick+=new MouseEventHandler(treeView1_MouseClick);
6 treeView1.AfterLabelEdit+=new NodeLabelEditEventHandler(treeView1_AfterLabelEdit);
7 }
8
9 private void Form1_Load(object sender, EventArgs e)
10 {
11 for (int i = 0; i < 10; i++)
12 {
13 treeView1.Nodes.Add("tv" + i.ToString());
14 treeView1.Nodes[i].Nodes.Add("tvc"+i.ToString());
15 }
16 treeView1.LabelEdit = true;//不可缺少
17 }
18
19 private void treeView1_MouseClick(object sender, MouseEventArgs e)
20 {
21 TreeView tv=(TreeView)sender;//获取treeview
22 if (e.Button == MouseButtons.Right)//判断是否鼠标右键
23 {
24 if (tv.SelectedNode != null)//判断是否存在选择节点
25 tv.SelectedNode.BeginEdit();
26 }
27 }
28 private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
29 {
30 string newTxt = e.Label;//获取新文本
31 //string id = e.Node.Text;//获取原来的文本
32
33 //进行你的更新操作
34
35 }