我正在使用Winform應用程序,我如何檢查是否有其文本在string Mystring
內部的treeNode?我該如何檢索這個節點的標籤?比較treeView節點文本到字符串
if (myString.Contains(treeView1.Nodes.ToString()))
我正在使用Winform應用程序,我如何檢查是否有其文本在string Mystring
內部的treeNode?我該如何檢索這個節點的標籤?比較treeView節點文本到字符串
if (myString.Contains(treeView1.Nodes.ToString()))
這適用於僅第一個匹配的節點內的第一個節點。
private TreeNode FindMatchedNode(TreeNodeCollection tnCol, string text)
{
TreeNode tn = null;
foreach (TreeNode node in tnCol)
{
if (text.ToLower().Contains(node.Text.ToLower()))
{
tn = node;
break;
}
else if (node.Nodes != null)
{
tn = FindNode(node.Nodes, text);
if (tn != null)
break;
}
}
return tn;
}
,併爲所有匹配的節點
private List<TreeNode> FindAllMatchedNodes(TreeNodeCollection tnCol, string text)
{
List<TreeNode> retVal = new List<TreeNode>();
foreach (TreeNode node in tnCol)
{
if (text.ToLower().Contains(node.Text.ToLower()))
{
retVal.Add(node);
}
else if (node.Nodes != null)
{
retVal.AddRange(FindNode(node.Nodes, text));
}
}
return retVal;
}
這個方法會從根遍歷樹,發現Text
是myString
public object FindNode()
{
var queue = new Queue<TreeNode>();
foreach (var n in treeView1.Nodes)
{
// Add all root nodes to queue
queue.Enqueue(n);
}
while (queue.Count > 0)
{
// Take the next node from the front of the queue
var node = queue.Dequeue();
// Check if myString contains node text
if (myString.Contains(node.Text))
return node.Tag;
// Add the node’s children to the back of the queue
foreach (var child in node.Children)
{
queue.Enqueue(child);
}
}
// None of the nodes matched the specified string.
return null;
}
'var queue = new Queue
'node.Text'和'node.Tag'和'node.Children'也無法識別! –
啊對不起,應該是'TreeNode',編輯我的帖子。 – gzaxx
嗯,你的示例代碼,treeView1.Nodes將只檢查TreeView控件的第一等級。這就是你想要的,還是你想與treeView的所有節點進行比較? –
我想比較所有的節點,但我不知道如何。 –