【问题标题】:How can i make in treeView1 in TreeNode EnsureVisible() that it will show the top first child node and not the bottom as first?如何在 TreeNode EnsureVisible() 中的 treeView1 中使其显示顶部的第一个子节点而不是底部的第一个?
【发布时间】:2014-08-04 17:49:28
【问题描述】:

在这种方法中,我在 TreeNodes 中进行搜索:

private void FindByText()
        {
            TreeNodeCollection nodes = treeView1.Nodes;
            foreach (TreeNode n in nodes)
            {
                FindRecursive(n);
            }
        }

还有 FindRecursive:

private void FindRecursive(TreeNode treeNode)
        {
            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);
            }
        }

在我所做的 FindRecursive 方法中:

tn.EnsureVisible();

但是,例如,如果我搜索并找到 20 个项目,它将向下滚动并显示最后找到的项目。 然后我需要向上浏览以查看它找到的其他项目。

我需要它像 tn.EnsureVisible();但会指向顶部的第一个项目,如果我愿意,我会向下滚动查看其他项目。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    我希望我明白你的意思。 您将需要以另一种方式“排序”您的代码,以便“顶部”项目是最后一个标记并使用 EnsureVisible() 关注的项目。 因此,首先将递归调用放在您的 compare->EnsureVisible 之前。这将导致子项在当前顶部节点被检查之前被标记,并且(可能)被标记为可见并专注于。 然后,如果需要,反转循环遍历的 TreeNode 集合 - 可能像这样Why does IList<>.Reverse() not work like List<>().Reverse。 所以他们将最后检查第一个 Top Item。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      相关资源
      最近更新 更多