我有一个像这样的节点的树视图:“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”,但不显示编辑文本框。
有什么想法吗? 感谢
答案 0 :(得分:5)
最后,我在solution找到了CodeProject。在底部的评论中,您还可以找到便携式解决方案。
答案 1 :(得分:4)
一个选项(在WinForms中 - 它是WPF中的另一个故事)是为您的TreeNodes使用自定义绘制,以便实际标签仍然是“Foo”并且您自定义后绘制“(1234)”。尽管如此,这有点痛苦。