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_exists
是true
,但my_nodes
是空的。幫助我理解這個樹形查詢
有誰能告訴我爲什麼?
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_exists
是true
,但my_nodes
是空的。幫助我理解這個樹形查詢
有誰能告訴我爲什麼?
該文檔混淆,它使用術語「名稱」和「鑰匙」交替使用。 Find()方法通過鍵找到節點,而不是節點文本。確保在添加節點時進行設置。這個作品:
treeView1.Nodes.Add("aardvark", "Eats ants");
TreeNode[] nodes = treeView1.Nodes.Find("aardvark", true);
Debug.Assert(nodes.Length > 0);
從TreeNodeCollection.Find
的文檔,則返回:
樹節點的對象數組name屬性相匹配的指定鍵
你傳入Text
財產 - 因此,除非該節點的名稱恰好與它的文本相同,它不會找到該節點。
如果您需要通過文本查找節點,我認爲您必須遞歸地遍歷所有節點並自己測試每個節點。
是不是你使用樹的兩個不同的表示?第一個使用TreeNode,但Find調用依賴於(鍵,文本)。在你的例子中,你永遠不會爲節點設置一個密鑰。 TreeView類是否足夠聰明以使用node.Text作爲關鍵字?
您應該使用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);
Off topic:哇...喬恩...你是SO社區經理? – Schultz9999 2011-01-07 07:07:07