| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > [VC#] TreeView - Файловый проводник |
| Автор: MuForum 5.9.2008, 15:45 | ||
| Доброе время суток! - Столкнулся со следующей проблемой, мне необходимо реализовать 'файловый проводник', чтобы одновременно отображались иконки объектов. - С самой системой считывания директорий и раскрытия дерева проблем нету, проблема возникла с привязкой иконок к дереву. # Класс для извлечения иконок:
- Иконки объектов извлекаются, с этим проблем нету. - Меня интересует другое, в компоненте 'TreeView' Используется класс 'ImageList' для отображения иконок, по началу я решил, что это глупо, но затем хорошо обдумав ситуации, когда объектов будет много понял, что это экономия ресурсов(Правильная!). - Следовательно возникает разумный вопрос: Как правильная сверять, присутствует уже эта иконка или нет в нашем классе 'ImageList'. (Добавлять все иконки - это маразм) - Сверять иконки по пиксельно тоже считаю не очень разумно (Хотя пока лучшего способа не придумал) - Меня интересует чисто алгоритм, как будет рациональнее сделать проверку на наличие иконки в классе 'ImageList'. - Реализовать алгоритм на уровне кода проблем не составит. P.S. -> То есть мой вариант: Это при добавление какого-либо объекта, извлекать иконку и по пиксельно сверять её с теми, что уже присутствуют в классе 'ImageList', если такая иконка уже есть, то извлекаем индекс и присваеваем его ноду. (Если во время проверки хотябы один пиксель не совпадает, то переходим к следующей иконки из списка 'ImageList') |
| Автор: Partizan 5.9.2008, 16:27 |
| вообще говоря существует некий "imagelist системы" его можно получить(на самом деле можно получить его хэндл) и назначить нужному контролу. Причём из каждого файла опять же через shell можно получить индекс иконки в этом imagelist... в моей реализации файлового менеджера использовался именно этот подход. |
| Автор: MuForum 5.9.2008, 18:19 | ||||
Если не затруднит, можно немного больше информации. (Пару ключевых слов, чтобы можно было на MSDN поискать и в google) # Добавлено: Немного помучившись, и правильно сформулировал http://www.google.md/search?hl=ru&q=System+imagelist&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=, нашел статью про системный 'как бы ImageList'. - Пока тяжело разобраться, так что помощь приветствую. P.S. -> Нашел статью на MSDN, правда объяснения и примеры на C++: http://msdn.microsoft.com/en-us/library/bb762179(VS.85).aspx; # Добавлено: Я нашел http://www.vbaccelerator.com/home/net/code/libraries/Shell_Projects/SysImageList/article.asp, в которой описывается как на C# обращаться к этому системному 'ImageList' и не только, но в данной статье есть неточности.
|