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 回答