当从TreeNode继承时,我应该覆盖什么字段或函数以使节点在TreeView控件中具有文本描述?

时间:2012-07-30 15:00:19

标签: c# text treeview treenode inheritance

我正在尝试从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(没有Text“asd”的节点) 我该怎么办?

2 个答案:

答案 0 :(得分:2)

据我了解,您将覆盖TreeNode只是为了显示一些您自己构建的文本。 如果在将节点添加到树之前已知计算所需的值,我建议这样做:

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

覆盖可视元素只是为了保留其他数据并不是一个好主意。 Usisally你覆盖visual元素来修改它的绘图或与它的行为相关的东西作为视觉元素。

为了保存相应的数据,您可以使用Tag属性来保存任何数据(无类型)。因此,您可以放置​​包含数据的类的实例。

        node.Tag = "AnyData";

答案 1 :(得分: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";
    }
}