13

「Foo (1234)」のようなノードを含むツリービューがあり、ユーザーがノードの名前を変更できるようにしたいのですが、(1234) なしで Foo の部分のみです。私は最初にノードテキストを次のBeforeLabelEditように変更しようとしました:

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

しかし、ノードをクリックして編集すると、テキストボックスに「Foo (1234)」と表示されます。

よし、それでは何か他のことを試してみましょう。

falseに設定treeView1.LabelEditしてから、次の操作を行います。

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();
        }
    }
}

そして でAfterLabelEditLabelEditfalse に戻します。

そして、何を推測しますか?これもうまくいきません。ノードテキストを「Foo」に変更しますが、編集テキストボックスは表示されません。

何か案は?ありがとう

4

2 に答える 2

5

最後に、 CodeProjectでこれに対する解決策を見つけました。下部のコメントの中には、移植可能なソリューションもあります。

于 2008-10-31T10:16:29.860 に答える
4

へー - 私は数年前にそれを打ちました。Connect に提案を残して(投票してください!)、BeforeLabelEdit でラベルを変更できるようにしました。

1 つのオプション (WinForms では - WPF では別の話です) は、TreeNode にカスタム ペインティングを使用して、実際のラベルがまだ "Foo" であり、その後に " (1234)" をカスタム描画することです。ただし、正しく取得するのは少し面倒です。

于 2008-10-08T09:27:09.647 に答える