我想以正确的方式覆盖树视图节点中的计数,以便通过特定文本或名称获取节点的计数。有可能这样做吗?提前致谢。
例如:
这就是我的树视图的样子
在这种情况下,如果我使用 treeView1.Nodes[0].Nodes.Count,我将得到 3,这是根中的节点数。
我想要这样的东西,treeView1.Nodes[0].Nodes.CountByText("Folder") 它将返回我 2,根节点中存在节点的确切数量(Text = "Folder")。
我想以正确的方式覆盖树视图节点中的计数,以便通过特定文本或名称获取节点的计数。有可能这样做吗?提前致谢。
例如:
这就是我的树视图的样子
在这种情况下,如果我使用 treeView1.Nodes[0].Nodes.Count,我将得到 3,这是根中的节点数。
我想要这样的东西,treeView1.Nodes[0].Nodes.CountByText("Folder") 它将返回我 2,根节点中存在节点的确切数量(Text = "Folder")。
编写扩展方法
public static int CountByText(this TreeView view, string text)
{
//logic to iterate through nodes and do count
return count;
}
然后你可以这样做:
var count = treeview.CountByText("Folder");
您也可以传入 TreeNodeCollection 来执行此操作,具体取决于您的偏好。
编辑:
一些快速代码来说明:
static class Class1
{
public static int CountByText(this TreeView view, string text)
{
int count = 0;
//logic to iterate through nodes and do count
foreach (TreeNode node in view.Nodes)
{
nodeList.Add(node);
Get(node);
}
foreach (TreeNode node in nodeList)
{
if (node.Text == text)
{
count++;
}
}
nodeList.Clear();
return count;
}
static List<TreeNode> nodeList = new List<TreeNode>();
static void Get(TreeNode node)
{
foreach (TreeNode n in node.Nodes)
{
nodeList.Add(n);
Get(n);
}
}
}
这是我根据@Jaycee 提供的代码修改的版本,我希望它可以帮助其他人
public static class Extensions
{
public static int CountByText(this TreeNode view, string text)
{
int count = 0;
//logic to iterate through nodes and do count
foreach (TreeNode node in view.Nodes)
{
if (node.Text == text)
{
count++;
}
}
return count;
}
}