表示メンバーが重複している可能性があるツリービューがありますが、タグは重複していません。例:
TreeNode node = new TreeNode(itemName);
node.Tag = itemID; //unique ID for the item
treeView1.Nodes.Add(node);
だから、検索するとき、私はを使用してitemNameで検索できることを知っています
treeView1.Nodes.Find(itemName, true);
しかし、どうすればタグを介して検索することができますか?treeView1.Nodes.Whereの定義がないので、私にとってはlinqはありません:(
タグで検索する方法について何か提案はありますか?:) ありがとうございました!
これを試して:
var result = treeView1.Nodes.OfType<TreeNode>()
.FirstOrDefault(node=>node.Tag.Equals(itemID));
注:あなたはあなたitemID
がユニークだと言ったので、あなたはユニークFirstOrDefault
なアイテムを検索するために使うことができます。見つからない場合はにresult
なりますnull
。
すべてのレベルですべてのノードを検索するには、次のような再帰的な方法を使用してみてください。
public TreeNode FromID(string itemId, TreeNode rootNode){
foreach(TreeNode node in rootNode.Nodes){
if(node.Tag.Equals(itemId)) return node;
TreeNode next = FromID(itemId, node);
if(next != null) return next;
}
return null;
}
//Usage
TreeNode itemNode = null;
foreach(TreeNode node in treeView1.Nodes){
itemNode = FromID(itemId, node);
if(itemNode != null) break;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加