帮我理解这个树视图查询

时间:2011-01-07 06:55:50

标签: c# .net

this.treeView.Nodes.Add(node);
bool my_node_exists = this.treeView.Nodes.Contains(node);
TreeNode[] my_nodes = this.treeView.Nodes.Find(node.Text, true);

此处my_node_existstrue,但my_nodes为空。

谁能告诉我为什么?

4 个答案:

答案 0 :(得分:3)

TreeNodeCollection.Find的文档中,它返回:

  

一个TreeNode对象数组,其Name属性与指定的键匹配

您正在传递Text属性 - 因此,除非节点的名称恰好与其文本相同,否则找不到该节点。

如果您需要按文本查找节点,我认为您必须递归迭代所有节点并自行测试每个节点。

答案 1 :(得分:1)

文档令人困惑,它可互换地使用术语“名称”和“键”。 Find()方法按键查找节点,而不是节点文本。确保在添加节点时进行设置。这有效:

        treeView1.Nodes.Add("aardvark", "Eats ants");
        TreeNode[] nodes = treeView1.Nodes.Find("aardvark", true);
        Debug.Assert(nodes.Length > 0);            

答案 2 :(得分:0)

你是不是在使用树的两种不同表示?第一个是基于TreeNode,但Find调用依赖于(key,text)。在您的示例中,您永远不会为节点设置密钥。 TreeView类是否足够智能以将node.Text用作键?

答案 3 :(得分:0)

您应该使用Node的Name属性来查找IT。

        TreeNode node = new TreeNode("data");
        this.treeView.Nodes.Add(node);
        bool a = this.treeView.Nodes.Contains(node);
        int count = this.treeView.Nodes.Count;
        TreeNode[] nodess = this.treeView.Nodes.Find(node.Name, false);