Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

treeView удаление Nodes в цикле

29K
28 декабря 2008 года
Daniel Lavrushin
30 / / 26.10.2008
Друзья,

что-то я не догоняю, что происходит.

Есть treeView, заполненый из xml порядка 1700 nodes (все в C#).
Задача: при нажатии кнопки, пробегаться и удалять nodes из treeview.

 
Код:
foreach(TreeNode node in treeView1.Nodes){
node.Remove();
}


В результате скрипт работает на половину. То есть при каждом нажатии из списка удаляется ровно половина отображаемых nodes. Это как понимать? =)

Изначально, задача была реализовать поиск по nodes. Человек вводит тект, жмет кнопку - ему фильтрует найденные nodes.
При таком скрипте все работает нормально:

 
Код:
foreach(TreeNode node in treeView1.Nodes){
if(node.Text.Contains(""+textBox1.Text+"")){
node.ForeColor = Color.Red;
}else{
node.ForeColor = Color.Black;
}
}

все расскрашивает правильно. А как дело доходит до удаления, то удаляет по половине. Помогите =).
341
29 декабря 2008 года
Der Meister
874 / / 21.12.2007
[QUOTE=Daniel Lavrushin]В результате скрипт работает на половину. То есть при каждом нажатии из списка удаляется ровно половина отображаемых nodes. Это как понимать? =)[/QUOTE].NET код никогда не интерпретируется, так что слово "скрипт" здесь неуместно.
Удивительно, что вообще хоть что-то работает: вы модифицируете коллекцию, и тут же продолжаете её использовать. С# не поддерживает магию.
Удаляйте по индексам, проходя с конца, например (RemoveAt()). Хотя лучше, наверное, собрать попадающие под критерий узлы в кучку (промежуточную коллекцию/список) и полностью перезаполнить элемент управления "за раз".
14
29 декабря 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Daniel Lavrushin
А как дело доходит до удаления, то удаляет по половине


Читайте MSDN
[QUOTE=MSDN]
TreeNodeCollection Class
......
Enumerating the collection and removing nodes is not supported.

You can also use the AddRange or Clear methods to add or remove all the tree nodes from the collection.
[/QUOTE]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог