我有两种方法可以用来搜索子节点中的TreeNode:
private void FindByText()
{
TreeNodeCollection nodes = treeView1.Nodes;
foreach (TreeNode n in nodes)
{
FindRecursive(n);
}
}
FindRecursive:
foreach (TreeNode tn in treeNode.Nodes)
{
string result = Regex.Replace(tn.Text, @"^\d*\.\s*", string.Empty);
if (tn.Text.Contains(this.txtNodeTextSearch.Text))
{
tn.BackColor = Color.Yellow;
tn.EnsureVisible();
count++;
label11.Text = count.ToString();
}
FindRecursive(tn);
}
txtNodeTextSearch是一个textBox
搜索工作的问题是,如果它在任何节点中找到了多个项目,那么这一行:
tn.EnsureVisible();
让treeView1自动向下滚动到最后找到的项目。然后我需要滚动manualy以查看第一个找到的项目。 无论如何,它会移动到找到的项目,如EnsureVisible(),但首先移到顶部的那个和底部的那个?
我试着这样做:
private void FindRecursive(TreeNode treeNode)
{
for (int i = treeNode.Nodes.Count - 1; i >= 0; i--)
{
TreeNode tn = treeNode.Nodes[i];
string result = Regex.Replace(tn.Text, @"^\d*\.\s*", string.Empty);
if (tn.Text.Contains(this.txtNodeTextSearch.Text))
{
tn.BackColor = Color.Yellow;
tn.EnsureVisible();
count++;
label11.Text = count.ToString();
}
FindRecursive(tn);
}
}
但它没有改变任何东西,它仍然自动滚动到最后找到的项目。或者也许第一个找到的项目在底部它不重要我想要它将指向/专注于顶部找到的项目然后如果我想看到其他找到的项目我将向下滚动。