我有一个Telerik Treeview控件,当有一个元素无法删除项目时,我添加了RemoveAt(0)
的问题。怎么可能这样呢?
以下是我的例子:
- ParentNode
|- child1
|- child2
TreeViewNode.Nodes
是RadTreeNodeCollection
对象
RadTreeNodeCollection
是NotifyCollection<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 RadTreeView
和TreeView
替换所有RadTreeNode
(telerik TreeNode
)和TreeView
(telerik TreeNode
),代码就会运行很好,所以Tag
属性不是有问题的。
答案 0 :(得分:0)
通过将RadTreeview
更改为TreeView
以及对RadTreeNode
到TreeNode
的所有引用来解决此问题,并且使用完全相同的代码一切正常。