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