Длинная короткая история:TreeNode Remove() не работает
- Я траверс родовое дерево и собрать некоторые узлы в список в соответствии с фильтром
- после полного обхода я начинаю удаление каждого узла по одному
Удалите собранные узлы
foreach (TreeData nd in nodeBucket.Reverse<TreeData>())
{
if (nd.node.Parent != null)
{
nd.node.Remove();
}
}
дерево имеет около 2000 узлов. Так или иначе, когда все узлы должны быть удалены, есть несколько узлов, которые не удаляются, на них вызывается Remove(), и они имеют нулевые родительские послесловия. Узлы, которые не удаляются, всегда одинаковы.
Также попробовал node.Parent.Nodes.Remove(node)
, не повезло.
tree.BeginUpdate();
tree.EndUpdate();
tree.Invalidate();
tree.Refresh();
tree.Update();
не работает.
TreeData структура выглядит следующим образом:
struct TreeData
{
public TreeData(TreeNode node)
{
this.node = node;
this.parent = node.Parent;
this.level = node.Level;
}
public TreeNode node;
public TreeNode parent;
public int level;
}
Выпуск фиксированной: проблема была связана с дублируют узлы (фильтрация была проверка имен узлов).
Что вы имеете в виду под «не удаляются»? Остаются ли они в коллекции узлов их родительского узла? – svinja
Они отображаются/видны в древовидной структуре, хотя после их удаления они будут иметь опорный набор родительских элементов равным null, а родительский узел не будет ссылаться на них. –
Итак, у вас есть код пересечения, можете ли вы обновить вопрос с этим также – Damith