Question

Je suis en train de mettre un filtre sur mon C # OpenFileDialog qui exclut certaines extensions de fichiers. Par exemple, je veux montrer tous les fichiers dans un répertoire qui ne sont pas des fichiers txt.

Est-il possible de le faire?

Était-ce utile?

La solution

Il n'y a aucun moyen direct de le faire en utilisant la BCL OpenFileDialog.

Je peux penser à deux options:

1) Faire un filtre qui a juste tous les types que vous ne voulez soutenir. Ce serait ma recommandation, puisque c'est le moyen le plus courant d'aller sur ce type d'opération.

2) Utilisez quelque chose le long des lignes de cette mise en œuvre personnalisée OpenFileDialog . Vous pouvez alors remplacer la méthode OnFileNameChanged () pour désactiver potentiellement le bouton « Ouvrir » si le fichier sélectionné a une extension .txt.

3) permettent à l'utilisateur de choisir un fichier txt, vomir une boîte de dialogue d'erreur, et rouvrez la boîte de dialogue de fichier. Cela se sent maladroit et pas trop grand pour moi, mais ....

Autres conseils

Je ne pense pas que ce soit possible. La façon dont le filtre est mis en place, est que vous pouvez choisir les fichiers à montrer, mais je ne pense pas qu'il y ait un moyen de montrer « Tous les fichiers sauf ... ». Venez y penser, vous avez déjà vu une boîte de dialogue Ouvrir un fichier dans Windows qui a cela? Je ne pense pas que je l'ai jamais vu un.

Votre meilleur pari est de les laisser choisir tous les fichiers, puis demander à l'utilisateur si elles choisissent un qui est pas autorisé ou filtrer jusqu'à tous les fichiers possibles que vous pouvez traiter.

trouvé avec Google recherche "OpenFileDialog"

EDIT: Désolé de ne pas étendre sur les aspects EXCLURE. Vous ne pouvez pas besoin d'aller à cet extrême, mais ce serait répondre à vos besoins ....

  • Effectuez une recherche récursive de répertoire de tous les fichiers que l'utilisateur peut choisir. (Il faut espérer que c'est un petit ensemble de dossiers.)
  • Uniquely d'identifier les postes sur ces fichiers. (Méthode System.IO.Path.GetExtension () et LINQ .Distint () de peut bien fonctionner ici)
  • Supprimez l'entrée "txt" dans la liste.
  • Construction d'une chaîne de filtre en boucle à travers ces extensions.

Je crains que ce n'est pas possible. Vous devez soit

  • a) Inclure une longue liste de toutes les extensions qui devraient être autorisés, ou

  • b) Autoriser toutes les extensions, puis utiliser une simple vérification dans le code qui rouvre la boîte de dialogue si le fichier sélectionné est l'extension .txt.

En outre, pourriez-vous un peu plus le contexte de cette question? Je vais avoir du mal à envisager un scénario où je pourrais explicitement besoin de exclure une certaine extension. Vous ne pouvez pas obtenir probablement loin avec juste un filtre (et peut-être un peu de vérifier dans le code) dans presque toutes les situations.

Voici une approche complètement différente, que vous avez peu de chance d'utiliser.

Au lieu d'utiliser OpenFileDialog, analyser les caractéristiques spécifiques dont vous avez besoin et créer votre propre boîte de dialogue. Vous pouvez facilement fournir tout filtrage que vous voulez, mais la difficulté se déplace sur la mise en œuvre et le maintien de la nouvelle interface utilisateur.

Je ne suggère pas que vous faites cela, mais parfois les utilisateurs sont plutôt insistants sur ce dont ils ont besoin.

Une autre alternative: au lieu d'utiliser une boîte de dialogue, venir avec quelque chose de complètement différent, qui va bien au sein de l'application. Cela peut ne pas être possible, mais nous ne savons pas grand-chose à propos de l'application.

Vous ne pouvez pas définir un filtre à Exclure extensions de boîtes de dialogue de fichier.

Vous pouvez toutefois mettre en œuvre un délégué pour l'événement FileOk sur la boîte de dialogue. Cet événement se déclenche juste avant que le fichier l'utilisateur sélectionné sera accepté, et les arguments d'événement fournissent une propriété Cancel que vous pouvez définir pour autoriser la sélection.

Il est pas aussi élégant que de faire réellement les mauvais fichiers invisibles, mais il vous permettra de pas autoriser la sélection du mauvais type de fichier.

PS:. Ne pas oublier de donner les commentaires des utilisateurs pourquoi le fichier n'a pas été acceptée, sinon ils peuvent se demander pourquoi la boîte de dialogue ne se ferme pas quand ils choisissent un fichier « txt »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top