Comment configurer un OpenFileDialog pour sélectionner des dossiers?

Dans VS .NET, lorsque vous sélectionnez un dossier pour un projet, une boîte de dialogue qui ressemble à un OpenFileDialog ou SaveFileDialog est affiché, mais est configuré pour accepter seulement les dossiers. Depuis que j'ai vu ce que j'ai voulu savoir comment c'est fait. Je suis conscient de la FolderBrowserDialog, mais je n'ai jamais vraiment aimé cette boîte de dialogue. Il commence à trop petite et ne me permet pas de prendre avantage de pouvoir tapez un chemin d'accès.

Je suis presque certain maintenant, il n'y a pas moyen de le faire partir .NET, mais je suis tout aussi curieux de voir comment vous le faire à partir de code non managé ainsi. Court de complètement de réimplanter la boîte de dialogue à partir de zéro, comment voulez-vous modifier la boîte de dialogue d'avoir ce comportement?

Je tiens également à souligner que je suis conscient de la FolderBrowserDialog mais parfois, je n'aime pas l'utiliser, en plus d'être vraiment curieux de savoir comment configurer une boîte de dialogue de cette manière. Me disant simplement utiliser le FolderBrowserDialog m'aide à maintenir une INTERFACE cohérente de l'expérience, mais ne pas satisfaire ma curiosité, donc il ne compte pas comme une réponse.

Ce n'est pas un Vista spécifiques chose; j'ai été voir cette boîte de dialogue depuis VS .NET 2003, de sorte qu'il est faisable en Win2k et WinXP. C'est moins d'un "je veux connaître la bonne façon de le faire" à la question et plus d'un "j'ai été curieux au sujet de ce depuis que j'ai voulu le faire en VS 2003" question. Je comprends que Vista boîte de dialogue de fichier a une option pour le faire, mais elle fonctionne sous XP donc je sais qu'ils ont fait quelque chose pour le faire fonctionner. Vista-des réponses précises ne sont pas des réponses, parce que Vista n'existe pas dans la question de contexte.

Mise à jour: je suis en acceptant Scott Wisniewski réponse, car il est livré avec un échantillon de travail, mais je pense que Serge a le mérite de pointage de la boîte de dialogue de personnalisation (qui est certes désagréable de .NET, mais il ne travail) et la Marque de Rançon pour comprendre que MME roulé probablement un dialogue personnalisée pour cette tâche.

  • juste une solution simple à partir de codeproject codeproject.com/Articles/44914/... [La clé pour obtenir OpenFileDialog pour sélectionner les deux fichiers et dossiers est de définir la ValidateNames et CheckFileExists propriétés à faux (boîte de dialogue.ValidateNames = false; boîte de dialogue.CheckFileExists = false) et de définir le nom du fichier à certains mot-clé spécial pour s'assurer que les dossiers sélectionnés (boîte de dialogue.FileName = "Sélection Du Dossier";).]
  • Présenter cela comme une réponse, il a fait le travail pour mon projet.
  • est dialog.FileName = "Folder Selection" censé être dialog.FileName = "Folder Selection." avec la période de fin? de toute façon je ne peux pas le faire fonctionner dans powershell sur le deuxième clic sur "Ouvrir" de toute façon. Il continue à dire que le fichier n'est pas trouvé, même si CheckFileExists est soi-disant faux
  • nvm, dans powershell réglage dialog.CheckFileExists = 0 au lieu de false résolu mon problème
  • Avez-vous essayé le Ookii boîtes de dialogue pour WPF?
InformationsquelleAutor OwenP | 2008-08-27