Est-il possible de spécifier des filtres personnalisés tels que 'ABC * .pdf' qui signifie: "Afficher tout PDF commençant par ABC"?
Je peux seulement spécifier * .pdf, * .doc,. , etc.
Merci Florian
Mis à jour
Modifié un peu ma solution, après avoir réalisé que ce serait mieux. Ce n'est pas un "filtre dur" complet, mais l'utilisation de la propriété FileName
devrait en principe vous donner ce dont vous avez besoin.
using System;
using System.Windows.Forms;
namespace TestingFileOpenDialog
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.openFileDialog1.FileName = "pro*";
this.openFileDialog1.Filter = "Pdf Files|*.pdf";
this.openFileDialog1.ShowDialog();
}
}
}
Je suppose que cela dépend du système d'exploitation avec lequel vous travaillez, mais cela a fonctionné de toute façon dans mon cas, sous Windows 8.
Je me rends également compte que cela ne filtre pas "en permanence" tous les fichiers non pertinents, mais il fournit au moins un filtre initial.
Résultat:
Sans pro*
dans le champ NomFichier, cela affichera plusieurs autres fichiers PDF.
Oui et non.
No: Regardez la page MSDN ,. Le filtre n'est pas utilisé de cette façon. C'est seulement pour les extensions.
Yes: vous pouvez écrire votre propre classe qui étend/imite OpenFileDialog, avoir des expressions régulières pour faire ce que vous voulez, et simplement exécuter cette correspondance sur tous les fichiers du dossier actuel (peut vous le voulez vraiment, allez-y :))
Comme indiqué dans mon commentaire:
Malheureusement ce n'est pas possible. Mais vous pouvez créer votre propre FileDialog
Pour créer votre propre FileDialog, vous pouvez utiliser les méthodes suivantes:
string[] Directories = Directory.GetDirectories(Path);
string[] Files = Directory.GetFiles(Path);
Filtrez maintenant le tableau Files
- selon vos spécifications:
List<string> wantedFiles = Files.ToList().Where(x => x.StartsWith("ABC"));
Pour obtenir les icônes de fichier, vous devez utiliser la DLLImport
de Shell32.dll:
[DllImport("Shell32.dll")]
Le code fourni dans cette question SO devrait résoudre le problème.
Un projet qui implémente ses propres FileDialogs écrits par mon frère peut être trouvé ici: Télécharger le projet
En bref, cela devrait faire l'affaire:
foreach (string file in Directory.GetFiles(Path)
.Where(x => new DirectoryInfo(x).Name.StartsWith("ABC")))
{
//Add the string to your ListView/ListBox/...
}
La réponse est simple: NON
Vous pouvez définir les filtres pour autoriser uniquement certains types de fichiers avec la propriété Filter
asbelow:
fileOpenDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
mais le filtrage des noms de fichiers est NOT
Possible.
Dans ce cas, vous pouvez créer votre propre variable OpenFIleDialog
personnalisée.
Voir ce lien pour plus d’informations: Comment créer un dialogue de fichier ouvert personnalisé en C #