特林诺德的树景房。这是怎么回事?

时间:2014-12-19 03:22:00

标签: c# winforms treeview

我正在设计自定义TreeNodes,并且有点神秘。

TreeNode的TreeView属性是一个公共属性,可用于获取TreeNode所属的TreeView。我似乎无法找到的是这是如何设置的。

我假设它是由TreeNodeCollection设置的,当你调用其中一个Add方法时,虽然我找不到TreeView控件如何通过集合将对它自己的引用传递给TreeNode。是否使用了未记录的方法或其他方法。或者mabey我再次错过了明显的出血,我知道这样做。

感谢您的帮助 丹尼

2 个答案:

答案 0 :(得分:1)

TreeNode包含一个内部构造函数,如下所示:

internal TreeNode(TreeView treeView) : this()
{
    this.treeView = treeView;
}

TreeView object调用以创建根节点:

root = new TreeNode(this);

当然,如果未设置treeView成员,则会在您第一次尝试从属性中检索时设置它:

public TreeView TreeView {
    get {
        if (treeView == null)
            treeView = FindTreeView();
        return treeView;
    }
}

答案 1 :(得分:0)

根据源代码,内部方法FindTreeView用于递归获取给定TreeNode的父级。您可以查看来源here

public TreeView TreeView {
        get {
            if (treeView == null)
                treeView = FindTreeView();
            return treeView;
        }
    }

注意:上面的代码段来自上面发布的源链接。

此外,正如Robert Harvey在他的回答中所解释的那样,它也可以通过内部构造函数设置:

internal TreeNode(TreeView treeView) : this() {
        this.treeView = treeView;
    }