2008-10-08 115 views
12

我有一个像这样的节点树状图:“Foo(1234)”,并希望允许用户重命名节点,但只有Foo部分,没有(1234)。我第一次尝试更改节点文本BeforeLabelEdit这样的:TreeView标签编辑问题

private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) 
{ 
    e.Node.Text = "Foo"; 
} 

但是当我点击节点进行编辑时,“富(1234)”出现在文本框中。

好的,那我们试试其他的。

我设置treeView1.LabelEdit为false,然后执行以下操作:

private void treeView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location)) 
     { 
      treeView1.SelectedNode.Text = "Foo"; 
      treeView1.LabelEdit = true; 
      treeView1.SelectedNode.BeginEdit(); 
     } 
    } 
} 

然后在AfterLabelEdit,我设置LabelEdit为false。

你猜怎么着?这也不起作用。它将节点文本更改为“Foo”,但不显示编辑文本框。

任何想法? 谢谢

回答

5

最后,我在CodeProject上发现了一个solution。在底部的评论中,您还会发现一种便携式解决方案。

4

嘿 - 我在几年前就发现了一个。我甚至留下了suggestion on Connect(投票赞成!)以允许在BeforeLabelEdit中更改标签。

一个选项(在WinForms中 - 这是WPF中的一个不同的故事)是为您的TreeNodes使用自定义绘画,以便实际标签仍然是“Foo”,并且您自定义后面会绘制“(1234)”。虽然这样做确实有点痛苦。

+0

感谢您的回答,我会尽力使用自定义绘画。 当然我投你的建议:) – neo2862 2008-10-08 09:44:38