Récupérer des fichier par type dans un listview

Atem94 Messages postés 1 Date d'inscription lundi 11 août 2008 Statut Membre Dernière intervention 4 octobre 2010 - 4 oct. 2010 à 14:30
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 - 15 mai 2011 à 15:06
Tout d'abords bonjours et merci à ceux qui prendront le temps de me lire et de me répondre.

Donc, voilà : Je voudrais pouvoir récupérer et afficher dans un listview tous les fichiers dans tous les dossiers du disque C portant le même type (*.txt par exemple).

J'arrive sans trop de problème à afficher les fichiers d'un dossier, mais bon, on est loin de ce que je voudrais bien pouvoir faire ..

Encore merci à ceux qui m'on lu et répondront.

1 réponse

xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
15 mai 2011 à 15:06
Salut,
J'ai une petite application WPF qui liste tout les fichiers du disque sélectionnées.

partie du code qui liste les fichiers:

example : letter = "c:" et pattern="*.txt"

List<string> files = new List<string>();
foreach (string filename in Directory.EnumerateFiles(letter,pattern, SearchOption.AllDirectories).SafeWalk<string>())
files.Add(filename);

ListBox.ItemSource = files ;

SafeWalk est une extension qui évite de lever une exception lorsque le fichier n'est pas accessible et qu'il faut les droits admin.
Tu ajoute cette classe a ton projet:

public static class DirectoriesExtensions
{
public static IEnumerable<T> SafeWalk<T>(this IEnumerable<T> source)
{
var enumerator = source.GetEnumerator();
bool? hasCurrent = null;
do
{
try{hasCurrent = enumerator.MoveNext(); }
catch{hasCurrent = null; }
if (hasCurrent ?? false) yield return enumerator.Current;
} while (hasCurrent ?? true);
}
}

Améliorations:
Utiliser une propriété de dépendance de type ObservableCollection pour la liste des fichiers
Définir un ItemTemplate pour le ListBox (nommé FileListeBox)
Tu peux charger tous les fichiers "*.*" et tu filtre la vue du ListBox.

Filtrage:
Tu ajoute un TextBox (nommé Pattern) et sur don event TextChanged:
ICollectionView view = CollectionViewSource.GetDefaultView(FileListeBox.ItemsSource);
view.Filter x> x.Contains(Pattern.Text.Trim());



Si tu veux les sources de mon appli je peux te les envoyer par mail.

A+
0
Rejoignez-nous