我正在设计自定义TreeNodes,并且有点神秘。
TreeNode的TreeView属性是一个公共属性,可用于获取TreeNode所属的TreeView。我似乎无法找到的是这是如何设置的。
我假设它是由TreeNodeCollection设置的,当你调用其中一个Add方法时,虽然我找不到TreeView控件如何通过集合将对它自己的引用传递给TreeNode。是否使用了未记录的方法或其他方法。或者mabey我再次错过了明显的出血,我知道这样做。
感谢您的帮助 丹尼
答案 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;
}