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

Ваш аккаунт

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

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

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

TreeView

15K
01 февраля 2006 года
Eugenis
5 / / 01.02.2006
Привет. Кото подскажет, как просмотреть ВСЕ ветви TreeView, или динамически его заполнить, или спозиционироваться на заданном узле, или перейти на уровень ниже или выше.

Кстати насчет темы http://forum.codenet.ru/showthread.php?s=&threadid=28844

(statusTree.SelectedNode=statusTree.Nodes["Вася"])
не работает. Пишет вот такую ошибку
Argument '1': cannot convert from 'string' to 'int'
273
01 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Цитата:
Originally posted by Eugenis
Привет. Кото подскажет, как просмотреть ВСЕ ветви TreeView, или динамически его заполнить, или спозиционироваться на заданном узле, или перейти на уровень ниже или выше.

Кстати насчет темы http://forum.codenet.ru/showthread.php?s=&threadid=28844

(statusTree.SelectedNode=statusTree.Nodes["Вася"])
не работает. Пишет вот такую ошибку
Argument '1': cannot convert from 'string' to 'int'

Какая версия Framework?? Если 1.x, то вместо "Вася" поставь номер соответствующего узла

15K
02 февраля 2006 года
Eugenis
5 / / 01.02.2006
Цитата:
Originally posted by 3A3-968M
Какая версия Framework?? Если 1.x, то вместо "Вася" поставь номер соответствующего узла



Да, но я знаю только ИМЯ. И кстати как перебрать ВСЕ узлы?

273
04 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Цитата:
Originally posted by Eugenis
Да, но я знаю только ИМЯ. И кстати как перебрать ВСЕ узлы?

Привожу код, при помощи которого мжно перебрать все узлы. Это код реализует метод рекурсивного спуска с проходом вглубь.
void Visit(TreeNodeCollection nodes)
{
foreach (TreeNode SubNode in nodes)
{
//делаешь с узлом то, что тебе надо
Visit(SubNode.Nodes);
}
потом при помощи кода Visit(treeView1.Nodes), где treeView1 экземпляр класса TreeView, перечисляются абсолютно все, даже вложенные узлы в дереве. Также с помощью этого метода ты можешь задать активный узел или реализовать поиск узла по имени примерно так:
TreeNode FindNode(string NodeName, TreeNodeCollection SearchTarget)
{
foreach(TreeNode node in SearchTarget)
{
if(node.Text==NodeName) return node;
FindNode(node.Nodes);
}
}

15K
06 февраля 2006 года
Eugenis
5 / / 01.02.2006
Цитата:
Originally posted by 3A3-968M
Привожу код, при помощи которого мжно перебрать все узлы. Это код реализует метод рекурсивного спуска с проходом вглубь.
void Visit(TreeNodeCollection nodes)
{
foreach (TreeNode SubNode in nodes)
{
//делаешь с узлом то, что тебе надо
Visit(SubNode.Nodes);
}
потом при помощи кода Visit(treeView1.Nodes), где treeView1 экземпляр класса TreeView, перечисляются абсолютно все, даже вложенные узлы в дереве. Также с помощью этого метода ты можешь задать активный узел или реализовать поиск узла по имени примерно так:
TreeNode FindNode(string NodeName, TreeNodeCollection SearchTarget)
{
foreach(TreeNode node in SearchTarget)
{
if(node.Text==NodeName) return node;
FindNode(node.Nodes);
}
}




Спасибо, еще одна идея в копилку. Я пытался реккурсивно занести ВСЁ дерево, но памяти не хватило, а это должно помочь, опять же, если хатит памяти на поиск на самых нижних уровнях дерева.
ПыСы. ОЗУ мало 32 метра, из них занять 5 не знаю на что и 5 -7 под систему (пишу для Pocket PC)

273
06 февраля 2006 года
3A3-968M
1.2K / / 22.12.2005
Цитата:
Originally posted by Eugenis
Спасибо, еще одна идея в копилку. Я пытался реккурсивно занести ВСЁ дерево, но памяти не хватило, а это должно помочь, опять же, если хатит памяти на поиск на самых нижних уровнях дерева.
ПыСы. ОЗУ мало 32 метра, из них занять 5 не знаю на что и 5 -7 под систему (пишу для Pocket PC)

Другой вариант перебора - использование хэш-таблицы (это уже крутые глюки) и мой способ - символьные деревья - работает по приниципу хэш, но с меньшими затратами на память.

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