RemoveAt on collection失败

时间:2017-02-09 18:55:04

标签: c# winforms telerik .net-4.6

我有一个Telerik Treeview控件,当有一个元素无法删除项目时,我添加了RemoveAt(0)的问题。怎么可能这样呢?

以下是我的例子:

- ParentNode
   |- child1
   |- child2

TreeViewNode.NodesRadTreeNodeCollection对象
RadTreeNodeCollectionNotifyCollection<RadTreeNode> NotifyCollection<T>Collection<T>(具有通知属性更改接口)
并且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属性不是有问题的。

1 个答案:

答案 0 :(得分:0)

通过将RadTreeview更改为TreeView以及对RadTreeNodeTreeNode的所有引用来解决此问题,并且使用完全相同的代码一切正常。