Mode d'emploi OpenFileDialog
pour sélectionner les dossiers ?
J'avais l'intention d'utiliser le projet suivant : https://github.com/scottwis/OpenFileOrFolderDialog
Cependant, j'ai été confronté à un problème. Il utilise le GetOpenFileName
et OPENFILENAME
structure. Et OPENFILENAME
a le membre nommé templateID
. C'est l'identifiant du modèle de dialogue. Et le projet contient le res1.rc
et l'init de la boîte de dialogue modèle, également. Mais je n'ai pas réussi à trouver comment joindre ce fichier à mon projet C#.
Y a-t-il une meilleure façon d'utiliser un OpenFileDialog
pour sélectionner les dossiers ?
0 votes
Si vous ouvrez le fichier du projet avec l'éditeur, vous remarquerez quelques propriétés supplémentaires en bas : <VCIncludePath ...>, <Win32Resource ...> et <Target Name="BeforeBuild"...>. Vous verrez qu'il exécute rc.exe pour compiler le fichier ressource res1.rc (assurez-vous de copier également le fichier "resource.h" dans votre projet). Assurez-vous que vous avez installé VisualC et que VCIncludePath pointe vers un emplacement approprié (celui de github pointe vers la version VC9.0, et vous devrez peut-être le changer). Après avoir compilé le fichier .rc, le fichier .res résultant est ajouté comme ressource pour votre exécutable avec la directive Win32Resource.
3 votes
Il existe une solution bricolée utilisant OpenFileDialog où
ValidateNames
yCheckFileExists
sont tous deux mis à faux etFileName
reçoit une valeur fictive pour indiquer qu'un répertoire est sélectionné. Je dis "hack" parce que cela prête à confusion pour les utilisateurs sur la façon de sélectionner un répertoire. Voir Sélectionnez un fichier ou un dossier dans la même boîte de dialogue0 votes
Duplicata possible de Comment configurer un OpenFileDialog pour sélectionner des dossiers ?
1 votes
Merci à Dan de m'avoir indiqué la solution OpenFileDialog ! C'est bien mieux que FolderBrowserDialog, parce que OFD montre les dossiers marqués d'un signet, etc, de sorte que tout le monde - en particulier dans les grandes entreprises - trouve leur merde. FBD ne sera pas très utile dans ces endroits.
0 votes
@DanielBallinger Je suis vraiment intéressé par le fonctionnement de votre méthode, mais lorsque j'ouvre la boîte de dialogue, que je sélectionne un dossier, que je clique sur ouvrir, puis que j'ouvre une deuxième fois, j'obtiens une boîte de dialogue d'erreur disant "fichier non trouvé", je ne sais pas pourquoi j'essaie de trouver le fichier après que CheckFileExists ait été réglé sur false.
1 votes
@ComradeJoecool J'ai converti mon commentaire en une réponse . Je l'ai essayé plusieurs fois et je n'ai pas eu de problème de "fichier non trouvé". Réutilisez-vous la même instance d'OpenFileDialog ?
1 votes
@DanielBallinger ah, j'ai trouvé mon problème, puisque j'utilise Powershell pour créer la boîte de dialogue, en paramétrant
ValidateNames
yCheckFileExists
àfalse
ne fonctionnait pas, j'avais besoin de les définir en tant que0
(ou mieux apprendre powershell)0 votes
Je pense que ce paquet nuget est un bon choix. BetterFolderBrowser
0 votes
Je voudrais fortement proposer de changer la réponse sélectionnée La réponse de Simon Mourier comme la réponse acceptée. J'ai mis en œuvre sa solution (après l'avoir trouvée ailleurs, j'ai découvert qu'il l'avait postée ici il y a quelques jours seulement), et elle fonctionne étonnamment bien.