13

我有一个带有如下节点的树视图:“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”,但不会出现编辑文本框。

有任何想法吗?谢谢

4

2 回答 2

5

最后,我在CodeProject上找到了解决方案。在底部的评论中,您还将找到一个便携式解决方案。

于 2008-10-31T10:16:29.860 回答
4

嘿-几年前我打过那个。我什至在 Connect 上留下了一个建议(投赞成票!)以允许在 BeforeLabelEdit 中更改标签。

一个选项(在 WinForms 中 - 在 WPF 中是另一回事)是为您的 TreeNodes 使用自定义绘画,以便实际标签仍然是“Foo”并且您自定义在其后绘制“(1234)”。不过,做对了有点痛苦。

于 2008-10-08T09:27:09.647 回答