2017-01-22 3 views
0

J'ai créé un explorateur de fichiers en C# pour sélectionner un fichier dans une liste de répertoires, mais j'ai des connaissances limitées sur la façon de spécifier le type de fichier lui-même.Spécification d'un type de fichier spécifique pour l'interface ListView

Je veux seulement .xls fichiers à afficher, pas tous les fichiers affichés. Comment je vais à ce sujet? J'ai actuellement:

TreeNode newSelected = e.Node; 
listView1.Items.Clear(); 
DirectoryInfo nodeDirInfo = (DirectoryInfo)newSelected.Tag; 
ListViewItem.ListViewSubItem[] subItems; 
ListViewItem item = null; 

foreach (DirectoryInfo dir in nodeDirInfo.GetDirectories()) 
{ 
    item = new ListViewItem(dir.Name, 0); 
    subItems = new ListViewItem.ListViewSubItem[] 
       {new ListViewItem.ListViewSubItem(item, "Directory"), 
     new ListViewItem.ListViewSubItem(item, 
    dir.LastAccessTime.ToShortDateString())}; 
    item.SubItems.AddRange(subItems); 
    listView1.Items.Add(item); 
} 
foreach (FileInfo file in nodeDirInfo.GetFiles()) 
{ 
    item = new ListViewItem(file.Name, 1); 
    subItems = new ListViewItem.ListViewSubItem[] 
       { new ListViewItem.ListViewSubItem(item, "File"), 
     new ListViewItem.ListViewSubItem(item, 
    file.LastAccessTime.ToShortDateString())}; 

    item.SubItems.AddRange(subItems); 
    listView1.Items.Add(item); 
} 

Répondre

1

Vous pouvez changer votre 2ème boucle à:

foreach (var file in nodeDirInfo.GetFiles()) 
{ 
    if (file.Extension == ".xls") 
    { 
     // Do the stuff with the file 
    } 
} 

ou

foreach (var file in nodeDirInfo.GetFiles() 
    .Where(file => 
     string.Equals(file.Extension, ".xls"))) 
{ 
    // Do the stuff with the file 
} 

Pour vos besoins, je vous conseille d'utiliser OpenFileDialog, comme il semble que vous avez juste besoin de l'utilisateur de sélectionner un fichier à partir de l'annuaire:

var openFileDialog1 = new OpenFileDialog(); 

openFileDialog1.InitialDirectory = @"C:\Path\To\Directory\"; 
openFileDialog1.Filter = "Excel Files (*.xls)|*.xls"; 

if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    var selectedFilePath = openFileDialog1.FileName; 
} 
+0

Cela fonctionne parfaitement - merci! –

+0

@DoN_Dan Pas de problème. Puis-je également suggérer que vous consultez 'OpenFileDialog' si ce navigateur de fichiers est juste pour regarder/sélectionner des fichiers dans une application – Bassie

+0

Merci - l'idée est que je peux sélectionner un fichier dans une interface utilisateur personnalisée, avec le fichier d'ouverture dans le arrière-plan une fois sélectionné. Je vais certainement jeter un oeil :) –

2
DirectorInfo.GetFiles("*.xls"); 

vous donnera ce filtre.

+0

Merci où placer ce code? –

+0

foreach (Fichier FileInfo dans nodeDirInfo.GetFiles ("* .xls")) –

+0

Merci - fonctionne! –