Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VC#] TreeView - Explorer - Файловый проводник, Использование системного листа/дерева фа 
:(
    Опции темы
MuForum
  Дата 31.3.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 2
Всего: 4



Доброе время суток!
Работаю на "Microsoft Visual Studio 2008". Язык программирования C#.

# Задача: Реализовать файловый проводник при помощи компонента TreeView с отображением иконок объектов.

1. Реализацию чтение и построение папок системы я сделал, но меня она не устраивает.
-- Реализовал следующим образом, сканирую логические диски и записываю их первыми нодами.
-- Затем при раскрытии какого-то нода я сканирую входящие папки до 2 уровня. (Максимально облегчить загрузку)
-- Чтобы не проделывать это бесконечно кол-во раз, при создание нода в поле Tag присваиваю string.Empty, после раскрытия/свёртывания присваиваю "+/-".
-- Оптимизировал как мог, но всё равно это не системное дерево/лист файлов.
-- Посему, меня интересует вопрос: Как привязаться к системному дереву/листу файлов, чтобы не заниматься выше изложенными идиотизмом.


# Добавлено: Нашел упоминания о функции SHGetFileInfo.


# Добавлено: На сколько я понял, так для отслеживания изменений файлов можно приспособить класс FileSystemWatcher, заметки GotDotNet.


P.S. -> Если есть какие-то ссылки, или названия книг, структур и т.д., которые к этому относятся, буду рад увидеть.

Это сообщение отредактировал(а) MuForum - 31.3.2009, 18:10


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Partizan
Дата 31.3.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



MuForum, 

Цитата

-- Затем при раскрытии какого-то нода я сканирую входящие папки до 2 уровня. (Максимально облегчить загрузку)


так она наоборот утяжеляется smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
MuForum
Дата 31.3.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 2
Всего: 4



Цитата(Partizan @ 31.3.2009,  17:42)
MuForum, 

Цитата

-- Затем при раскрытии какого-то нода я сканирую входящие папки до 2 уровня. (Максимально облегчить загрузку)


так она наоборот утяжеляется smile

Ниже написал, что я использую поле .Tag для определения, были ли уже загружены тужа ноды или нет.
- Если да, То просто раскрываю, если нет, то загружаю.

Код

        private void NodeExpand(TreeNode tn)
        {
            if (tn == null) return;
            // ----
            // Если есть подузлы.
            if (tn.Nodes.Count != 0)
            {
                // Если раскрываем в первый раз.
                if (tn.Tag == null || ((string)tn.Tag) == "")
                {
                    // Удаляем фиктивный узел.
                    tn.Nodes.RemoveAt(0);
                    // Добавляем подузлы.
                    AddTreeNodes(tn);
                    // Устнавливаем признак того, что
                    // узел уже раскрывали и добавили в него все подузлы.
                    tn.Tag = "+";
                }
            }
            else
            {
                AddTreeNodes(tn);
                // Устнавливаем признак того, что
                // узел уже раскрывали и добавили в него все подузлы.
                tn.Tag = "+";
            }
            // ----
            WDir(tn.FullPath);
            // ----
            ListView_ShowFiles(tn.FullPath);
        }


Это сообщение отредактировал(а) MuForum - 31.3.2009, 18:04


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Partizan
Дата 31.3.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



MuForum, да 2 уровня-то зачем? smile


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
MuForum
Дата 31.3.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 427
Регистрация: 13.6.2007
Где: Молдова, Кишинев

Репутация: 2
Всего: 4



Цитата(Partizan @ 31.3.2009,  20:07)
MuForum, да 2 уровня-то зачем? smile

Суть не в этом =)
- Для того, чтобы разобраться с фиктивным нодам, нужно его добавлять или нет. (Есть ли файлы во второстепенных папках или нет)
- Ладно, вопрос то звучал по другому =)
- Чего можешь подсказать касательно главного вопроса ;) ?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа!" (Р. Шекли)
PM MAIL WWW ICQ Skype MSN   Вверх
Partizan
Дата 31.3.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 8
Всего: 67



Цитата

Посему, меня интересует вопрос: Как привязаться к системному дереву/листу файлов, чтобы не заниматься выше изложенными идиотизмом.


По этому вопросу? 

Да никак smile Нет системного дерева smile
Всё ручками делать...либо взять чужую реализацию...на CodeProject куча статей на эту тему наверняка


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
XoLa
Дата 8.6.2009, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.5.2009

Репутация: нет
Всего: нет



MuForum, выложи плз алгоритм всей проги ну или хотя бы функций
ListView_ShowFiles
WDir
AddTreeNodes
Заранее благодарю!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0499 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.