2016-10-03 3 views
3

Учитывая TreeStore и TreeIter, как удалить все дочерние узлы из родителя БЕЗ удаления родительского? Ни один из них не выбран, просто нужно очистить набор узлов под родителем.Как удалить все дочерние узлы из родительского TreeIter из Gtk.TreeStore?

ParentNode 
    +- Child 1 
    +- Child 2 
    +- Child 3 

Так что удалите «Ребенок 1-3» и сохраните ParentNode.

Это должно быть зациклен как-то на что-то:

 TreePath p = this.game_store.GetPath (this.players_iter); 
     p.Down(); 
     TreeIter i = new TreeIter(); 
     this.game_store.GetIter (out i, p); 
     this.game_store.Remove (ref i); 

ответ

1

Попробуйте это:

while (this.game_store.Remove (ref i)); 

Documentation of Remove function says:

"@iter устанавливается на следующую правильную строку на этом уровне," «Return% TRUE, если @iter все еще действителен,% FALSE, если нет».

+0

А, так просто, я действительно не понимаю основную концепцию магазина. –

Смежные вопросы