我有一个Telerik Treeview控件,当有1个元素未能删除该项目时,我在RemoveAt(0)上添加了问题。怎么可能呢?

这是我所拥有的一个例子:

- ParentNode
   |- child1
   |- child2


TreeViewNode.NodesRadTreeNodeCollection对象
RadTreeNodeCollectionNotifyCollection<RadTreeNode>
NotifyCollection<T>Collection<T>(具有notify属性更改接口)
Collection<T>是基本的Microsoft集合

因此,这是一个示例以说明正在发生的事情:

// get parent node called "ParentNode" result is not null
var parentNode = treeview1.Nodes[0];

// get quantity of nodes result is 2
var qtyNodes = parentNode.Nodes.Count;

// try removing the first node : this calls Collection<T>.RemoveAt(T);
parentNode.Nodes.RemoveAt(0);

// here count is still 2

// removing the tag from the node which contain model informations
parentNode.Nodes[0].Tag = null;

// try removing the first node again
parentNode.Nodes.RemoveAt(0);

// now the count is 1 so the item really got removed


标签与Collection.RemoveAt()有什么关系?
另外,我还有另一种情况,即从节点删除标签也不起作用。那么,对象的其他哪些属性可能导致Collection.RemoveAt失败?

*编辑*
我只是用标准的Microsoft RadTreeViewTreeView替换了所有RadTreeNode(telerik TreeNode)和TreeView(telerik TreeNode),并且代码可以正常运行,所以不是Tag属性有问题。

最佳答案

通过将RadTreeview更改为TreeView并将所有对RadTreeNode的引用更改为TreeNode来解决此问题,并且在完全相同的代码下都可以正常工作。

10-07 14:04