0

TreeNodeから継承して、独自のノードをTreeViewに追加しようとしています。

class TreeViewItem : TreeNode
{
    public new string Text;

    public override string ToString()
    {
        return "asd";
    }
}

私はそれを試しました:

    TreeViewItem tvi = new TreeViewItem();
    tvi.Text = "asd";
    trv_bd_content.Nodes.Add(tvi);

ただし、TreeViewに空のノードが追加されます(テキスト「asd」のないノード)。
私は何をすべきか?

4

2 に答える 2

2

私が理解しているように、あなたはあなたがTreeNodeあなた自身で作成したいくつかのテキストを表示するためだけにオーバーライドしようとしている。ノードをツリーに追加する前に計算に必要な値がわかっている場合は、次のようにすることをお勧めします。

        treeView = new TreeView();
        var node = new TreeNode(
            string.Format("{0}: {1} / {2} / {3}", name, latitude, longitude, H));
        treeView.Nodes.Add(node);

追加のデータを保持するためだけにビジュアル要素をオーバーライドすることはお勧めできません。通常、ビジュアル要素をオーバーライドして、描画またはビジュアル要素としての動作に関連するものを変更します。

対応するデータを保持するTagために、任意のデータ(型なし)を保存できるプロパティを使用できます。したがって、データを含むクラスのインスタンスを配置できます。

        node.Tag = "AnyData";
于 2012-07-30T15:27:24.153 に答える
1

treenodeは表示情報を取得するためにToString()を使用していないようです。代わりに.Textプロパティを使用します(オーバーライドされることを楽しんでいないようです)

必要に応じて、コンストラクターでTextプロパティを設定できます。

class TreeViewItem : TreeNode
{
    // public new string Text;  Remove this so you don't call it

    public TreeViewItem(){
        this.Text = "asd";
    }

    //Treeview doesn't seem to use this
    public override string ToString()
    {
        return "asd";
    }
}
于 2015-06-17T09:15:58.477 に答える