|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Bonjour ou plutôt bonsoir,
Dans l'application que je développe, j'utilise un bouton qui me sert à parcourir des fichiers grâce au composant "openFileDialog". Le problème c'est qu'il ne gère que les fichiers et pas les dossiers. Et inversement pour le composant "folderBrowserDialog". Auriez-vous une idée pour contourner cela ? J'ai vu des choses "vite fait" sur Google, mais des étapes imcompréhensibles... Merci d'avance pour vos réponses. diabolokev |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonjour,
Et non, il n'existe pas de composant pour sélectionner indifféremment un dossier ou un fichier, mais j'ai été confronté au même soucis quelques années auparavant, et tu dois développer ton composant toi même... Je n'ai plus du tout les sources, mais c'est pas sorcier.Si tu as besoin d'aide n'hésites pas. Bon dév.
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Peux-tu me guider car je ne sais pas par où commencer ?
Je n'ai jamais créé de composant en C#... EDIT1 : J'ai trouvé ça : http://www.codeproject.com/Articles/...-IShellBrowser Par contre faut que je sache l'intégrer à Visual Studio... Ca c'est encore autre chose ![]() EDIT2 : Bon... Le composant n'était pas celui recherché... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonjour,
Commence déjà par récupérer les fichiers et dossiers de manière récursive (attention aux perfs, il vaut mieux récupérer les sous dossiers au moment où l'utilisateur en a besoin, ça prend moins de temps que tout charger dès le début en mémoire) et tu les affiches dans un composant du style treeview. Commence à coder et si tu as des problèmes, n'hésites pas...
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
J'ai réussi à afficher dans 3 ListBox :
- Lecteurs - Dossiers - Fichiers Le problème : Là où il y a des dossiers, il n 'y pas les fichiers et inversement pour l'autre. Je ne peux pas faire de sélections multiples. Comment puis-je faire avec un TreeView ? Voici mon code actuel : Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
J'ai réussi à charger mes lecteurs et mes dossiers, mais c'est super long car il charge tout d'un coup...
Code :
Quelqu'un aurait une idée s'il vous plait ? EDIT : PS : J'ai récupéré un peu de code sur un site |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Up ?
Quelqu'un pour m'aider ? |
|
|
01
|
|
|
#8 | ||||
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonsoir,
Je viens de faire ce que tu souhaites faire en light voire très light Mais tu as une bonne base pour commençer... Le code du designer.cs Code :
Code :
Code :
IEnumerable<FileSystemInfo> fichiersEtDossiersSelectionnes = FileDirectorySelector.Afficher(this, "coucou"); PS : Nous n'avons pas toujours le temps pour répondre rapidement à tes questions, sois un peu compréhensif
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
||||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Désolé pour mon impatience. Je stresse un peu car c'est une partie de mon projet pour mon BTS
![]() Sinon, pourrais tu me guider dans le code que tu m'as donné ? Car j'ai des erreurs ('InitializeComponent' et 'treeView1' n'existe pas dans le contexte actuel) et je ne vois pas d'où cela peut venir. Peut-on voir un soir, sur un logiciel de discussion instantané, pour avoir des conseils sur mon projet. J'ai tellement de questions... Même si c'est 10 minutes. Merci d'avance |
|
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonsoir,
Citation:
Ils sont joints à ce message Citation:
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
||
|
|
10
|
|
|
#11 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Bonsoir,
Tout d'abord merci beaucoup pour ce magnifique code. ![]() En effet c'est ce que j'attendais. Mais j'ai tout de même quelques questions pour mieux comprendre : Peux-tu m'expliquer l'évènement treeView1_AfterSelect que tu as ajouté ? Pour l'évènement treeView1_BeforeExpand, je comprends ça : "Avant de charger l'arborescence, pour chaque noeud, si c'est un dossier, alors..." et là je bloque... |
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonsoir,
Citation:
Citation:
Sinon, je te conseille de passer en debug pour comprendre le code
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
||
|
|
00
|
|
|
#13 | |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Citation:
Merci pour BeforeExpand Je regarde pour continuer mon projet et je reviens vers toi pour les nouvelles. |
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Dans ce code, je n'ai pas l'impression qu'il y ait d'erreur non voulue de ma part... Précise un peu ton interrogation.
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Oups...
Après avoir relu ton code et ce que j'ai adapté, c'est moi qui avait fait un mauvaise manipulation. J'ai du cliquer sur l'évènement AfterSelect... Edit : J'ai remarqué un petit problème avec le AfterCheck. Normalement, dans la logique des choses, le AfterCheck ne fonctionne pas si l'évènement n'est pas défini dans le composant. Ce que j'ai fait, j'ai ajouté tout mes évènements dans le composant. Et en faite, quand je lance l'application, je coche la case, il applique deux fois la procédure évènementielle. J'ai donc enlevé cette procédure du composant et il passe automatiquement par la procédure et une seule fois. Ceci ne fonctionne que pour AfterCheck. Par exemple pour le AfterSelect, il ne fera rien du tout si l'évènement n'est pas dans le composant. Y a-t-il une explication ? |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Bonsoir,
Que tu le fasses par le composant ou le code, il faut le faire. Dans mon exemple, je l'ai fait dans le OnLoad, mais si tu passes par le Designer pour ajouter un autre abonnement, c'est normal qu'il y passe 2 fois. Pour le afterselect, il faut que tu montres du code, on peut pas deviner...
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Kévin Développeur informatique Inscription : décembre 2012 Messages : 13 ![]() |
Ah oui en effet, j'ai pas pensé à regarder dans le code du OnLoad().
Merci Sinon pour le AfterSelect, c'était juste un exemple. Du coup je viens de voir d'où ça vient. Question de rapidité, c'est quoi le mieux entre le mettre dans le code ou le composant ? |
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Consultant informatique Inscription : février 2006 Messages : 731 ![]() |
Il faut que tu fasse la nuance entre dans le composant et dans le designer. Mais dans le designer, ça te permet d'éviter de t'y abonner 2 fois par exemple.
Sinon aucune différence.
__________________
Un âne se croit savant parce qu'on le charge de livres (proverbe américain) N'oubliez pas de avant de ![]() Pas de question techniques par MP, c'est contre la philosophie du forum
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com