TreeView标签编辑问题

时间:2008-10-08 09:24:14

标签: c# treeview

我有一个像这样的节点的树视图:“Foo(1234)”,并希望允许用户重命名节点,但只允许重命名Foo部分,而不是(1234)。我首先尝试更改BeforeLabelEdit中的节点文本,如下所示:

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

但是当我点击节点进行编辑时,文本框中会出现“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”,但不显示编辑文本框。

有什么想法吗? 感谢

2 个答案:

答案 0 :(得分:5)

最后,我在solution找到了CodeProject。在底部的评论中,您还可以找到便携式解决方案。

答案 1 :(得分:4)

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

一个选项(在WinForms中 - 它是WPF中的另一个故事)是为您的TreeNodes使用自定义绘制,以便实际标签仍然是“Foo”并且您自定义后绘制“(1234)”。尽管如此,这有点痛苦。