2010-03-16 6 views
0

J'ai récemment vu une application qui avait deux contrôles simples (un treeView et un ListView détaillé) ce qui était utilisé pour lister les répertoires et les fichiers. Je sais comment faire cela, mais il avait une autre fonctionnalité intéressante que la liste des fichiers: il charge des informations à partir du shell système, comme les icônes de dossiers, les spécifications de fichiers (types de fichiers hérités du système, donc si j'avais une application modifié le type de fichier SVG à "Unknown vectorgraphic stuff" puis il a montré tout le type de fichier SVG comme cette chaîne avant).Vue simple des fichiers et des dossiers en C#

Je voudrais vous demander, comment pourrais-je faire ces fonctionnalités facilement sans utiliser de bibliothèque tierce?

Répondre

1
  1. Pour obtenir l'icône du fichier, utilisez System.Drawing.Icon.ExtractAssociatedIcon. Pour obtenir le type de fichier, vous devez utiliser la fonction SHGetFileInfo de Win32.
  2. Pour obtenir la date de modification, la taille du fichier, etc., vous pouvez utiliser les classes DirectoryInfo et FileInfo.

Vous pouvez également envisager d'utiliser des commandes prêtes à l'emploi comme Shell MegaPack qui montrent des fichiers/dossiers comme celui-ci avec les mêmes icônes, détails, menus, etc

+0

Merci. Que Shell Megapack ressemble à la meilleure solution, va l'essayer! – fonix232

1

vous pouvez obtenir l'icône d'un fichier par System.Drawing.Icon.ExtractAssociatedIcon() ...

+0

Oui, je le sais, mais il est un peu frustrant d'ajouter une icône avec cette . N'y at-il pas une sorte de version automatisée de cela? Je veux dire l'extraction de l'icône et l'ajout de l'icône au nœud avec une simple commande? – fonix232

+0

bien - Je suppose que vous pouvez obtenir toutes les icônes pour la vue actuelle et les placer dans une ImageList de l'arborescence, puis affecter des ID d'image aux nœuds. Mais je ferais le dessin propriétaire des nœuds treeview, et en dessinant chaque nœud, je récupèrerais l'icône du fichier/répertoire et le dessinerais avant le texte de l'item. – Axarydax

+0

N'est-ce pas un peu lent? Et aussi, pour treeView, il n'a besoin que des icônes de dossier. Mon plus gros problème est le listView, où il devrait contenir TOUTES les icônes des fichiers, avec le type de fichier aussi ... – fonix232

Questions connexes