У меня есть элемент управления TreeView Telerik, и у меня есть проблемы с RemoveAt(0)
, когда у 1 элемента не удается удалить элемент. Как это возможно?RemoveAt on collection failed
Вот пример того, что у меня есть:
- 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
?
* Редактировать * Я просто заменить все RadTreeView
(Telerik TreeView
) и RadTreeNode
(Telerik TreeNode
) по стандарту Microsoft TreeView
и TreeNode
и код работает нормально, так что это не Tag
свойство, которое является проблематичным.
[документация] (http://docs.telerik.com/devtools/winforms/api/html/t_telerik_collections_generic_notifycollection_1.htm) из «NotifyCollection» показывает, что он не раскрывает свой собственный «RemoveAt». Но он предоставляет метод «RemoveItem» на основе индекса. Что произойдет, если вы заменили вызовы на 'Collection .RemoveAt' по вызову' NotifyCollection .RemoveItem'? Не обижайтесь на Telerik, но, возможно, это просто не выполняется последовательно. –
dlatikay
'RemoveItem()' deos не существует для объекта. Лучше всего у меня есть «Удалить (Node)» и «Удалить (String objectname)», и оба они не работают. – Franck
@Franck вы уверены, что используете RadTreeNodeCollection? Потому что согласно [документации] (http://docs.telerik.com/devtools/winforms/api/html/m_telerik_wincontrols_ui_radtreenodecollection_removeitem.htm) есть один. –