111,098
社区成员




/// <summary>
/// 搜索
/// </summary>
/// <param name="node"></param>
/// <param name="value"></param>
private void SelectChildNodes(TreeNode node, string value)
{
if (node.Nodes.Count == 0) //叶子的Count就是0
{
if (!node.Text.Contains(value))
{
_nodeList.Add(node);
}
}
else
{
foreach (TreeNode childNode in node.Nodes)
{
SelectParentNodes(childNode, value);
}
}
}
/// <summary>
/// 在父节点中搜索
/// </summary>
/// <param name="node"></param>
/// <param name="value"></param>
private void SelectParentNodes(TreeNode node, string value)
{
//如果父节点是搜索的节点 子节点全部显示
if (node.Nodes.Count == 0)//叶子的Count就是0
{
if (!node.Text.Contains(value))
{
_nodeList.Add(node);
}
}
else
{
foreach (TreeNode childNode in node.Nodes)
{
SelectParentNodes(childNode, value);
}
}
}
调用 foreach (TreeNode node in treeMetadataValue.Nodes)
{
SelectChildNodes(node, toolStripTxtValue.Text.Trim());
}
// SetTreeViewData(_keyScopeList, null, false);
if (_nodeList.Count > 0)
{
foreach (var node in _nodeList)
{
//移除与搜索结果无关的节点
treeMetadataValue.Nodes.Remove(node);
}
}
因为winformTreeView没有隐藏节点的功能所以我的想法是先把无关的节点找出来,最后在移除掉
不过怎么写都不对