Comment obtenir les noms de fichiers à l'aide de OpenFileDialog dans .NET (1000+ fichier multiselect)
Peut-être certains d'entre vous sont venus à travers cette avant....
Je suis à l'ouverture des fichiers pour l'analyse. Je suis en utilisant OpenFileDialog, bien sûr, mais je suis limité à un tampon de 2048 sur l' .Les noms de fichiers de la chaîne. Donc, je ne peux que sélectionner quelques centaines de fichiers. C'est OK pour la majorité des cas. Cependant, par exemple, j'ai dans un cas, 1400 fichiers à ouvrir. Connaissez-vous un moyen de le faire avec le dialogue d'ouverture de fichier. Je veux juste le tableau de chaînes .Les noms de fichiers, je passe qu'à l'analyseur de classe.
Je pensais aussi à offrir un FolderBrowserDialog option et puis je utiliser une autre méthode pour juste une boucle sur tous les fichiers dans un répertoire, comme la classe DirectoryInfo. Je le ferais en dernier recours, si je ne peux pas avoir une solution tout en un.
- Vous souhaitez que l'utilisateur puisse sélectionner 1400 fichiers manuellement???
- Le
FileNames
de la propriété est de typestring[]
, c'est un tableau de chaînes de caractères. Alors, qui de mémoire tampon parlez-vous? Pourriez-vous préciser? Note qu'un chemin individuel (c'est à dire une entrée dans le tableau) est limité dans la longueur, qui est un système d'exploitation/système de fichiers restriction. - Robinson: Vous avez déjà appuyé sur la touche Ctrl+r sur votre clavier?
- l'utilisateur peut appuyer sur Ctrl + A (TOUT Sélectionner), puis sur OK, dans ce cas BrowseForFolder() est mieux
- Veuillez voir Shay commentaire. Si nous parlons de la sélection de tous les fichiers dans un dossier, puis de navigation pour un dossier semble plus intuitive de la solution. Peut-être en fournissant une option pour soit.
Vous devez vous connecter pour publier un commentaire.
mon dieu je ne peux pas imaginer la sélection de 1400 fichiers dans un dialogue d'ouverture de fichier. Peut-être vous devriez juste permettre à l'utilisateur de saisir un filtre, puis faire un Système.IO.Répertoire.GetFiles appel.
Je serais certainement aller le FolderBrowser route. Je ne voudrais JAMAIS avoir à sélectionner de 50 à 100 beaucoup moins de+ de 1000 fichiers manuellement. Mieux pour récupérer le dossier, invite pour un modèle de correspondance et de les sélectionner, de cette façon. À partir d'un point de vue de l'utilisabilité, le choix d'un grand nombre de fichiers est un mauvais choix à mon humble avis.
Vous obtenez une erreur ou d'exception? Êtes-vous certain que vous êtes à l'aide de la
OpenFileDialog
de laSystem.Windows.Forms
espace de noms?Le code suivant fonctionne parfaitement avec plus de 2000 fichiers sélectionnés:
Ce que j'ai fait a été d'écrire une méthode utilise la OpenFileDialog, mais vérifie la longueur de la chaîne de chemin indirectement. Qui est si la méthode échoue, un message d'erreur est affiché à l'utilisateur de leur dire qu'il y a trop de fichiers, puis un FolderBrowser est indiqué avec le dossier sélectionné que l'utilisateur était à la recherche dans. J'ai également ajouté séparée options pour importer les fichiers ou importer des dossiers dans la barre de menu.
Voici le code pour le faire. Ce sont des Méthodes dans une classe statique appelé DataFileIO où j'ai mis toutes les personnaliser IO trucs pour écrire des vers excel ou access ou xml, etc.