【问题标题】:C# TreeView how can I get the TreeNode at an index position?C# TreeView 如何在索引位置获取 TreeNode?
【发布时间】:2016-05-03 16:12:57
【问题描述】:

TreeView 中的每个 TreeNode 都有一个唯一索引。

我在 C#TreeView 控件中找不到方法来获取给定索引位置的节点(GetNodeAt() 只是在绘图点处给出节点)。

当我只知道它的索引时,有没有办法获取 TreeNode?​​strong>

编辑

myTreeView.SelectedNode.Index = <wanted index> 

从此answer 不起作用。该属性是只读的。

编辑2

我需要它来做什么:为了避免在非常大的 TreeView 中进行递归搜索,我想运行

for(int i = startPosition; i < treeView.GetNodeCount(); i++) 

检查节点,获取索引,然后使用索引选择找到的节点。

【问题讨论】:

  • 您的陈述似乎不属实。每个TreeNode 都有一个Index 属性,该属性对其所属的Nodes 集合是唯一的。但是TreeViews 不是扁平的,所以TreeNode 不一定属于最顶层的Nodes 集合,因此它的Index 并不是整个TreeView 独有的。
  • 我不明白为什么这个问题被两次否决并获得了接近的票数。我在索引处获取 TreeNode 时遇到了问题。所以我搜索了c# treeview get node at indexc# treeview get child at index 和其他更多。我发现的只是 GetNodeAt() 不符合我的需要。最后我在这里问。好的 - Stackoverlfow 的大多数 C# 程序员都比我好,而且我不完全理解 C# 概念。但是这里问的要求不应该是知识水平,而是问之前的调查努力,然后是一个很好的问题。我错了吗?
  • @boboes,是的,如果我正确理解文档的话。
  • @MethodMan SelectedNode.Level= "TreeView 控件中树节点的从零开始的深度。"。它是只读的(来自 MSDN)。它如何回答我的问题how can I get the TreeNode at an index?
  • 错字应该是TreeView.SelectedNode.Index

标签: c# winforms treeview


【解决方案1】:

在 MSDN 上有一个很好的例子来说明如何做到这一点。

TreeView.SelectedNode.Index

MSDN: TreeNode.Index Property

MSDN: TreeView Class

编辑: 我没有完全阅读这个问题。找到您的问题所需的信息here

【讨论】:

  • 从定义中:public class TreeNode : MarshalByRefObject, ICloneable, ISerializable 我发现:public int Index { get; }。这意味着索引是只读并且不能被分配。这如何回答我的问题?
  • 看到这个问题here
  • TreeView 中的索引在所有节点上并不是唯一的。它只有一个级别是独一无二的。所以我的问题的答案是:当 TreeView 有多个级别时它不起作用。
【解决方案2】:

我的假设 "Every TreeNode in TreeView has an unique index."错误的。它只对某个级别的节点是正确的。

如何获取“索引位置的TreeNode”?

我需要将所有索引位置从根目录保存到我想要的节点。有了这些信息,我以后可以找到我保存的节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多