2017-01-22 13 views
0

Я создал файл-проводник на C#, чтобы выбрать файл из списка каталогов, однако у меня ограниченные знания о том, как указать сам тип файла.Задание определенного типа файла для интерфейса ListView

Я хочу только .xls файлы, которые будут отображаться, а не все отображаемые файлы. Как мне это сделать? Я в настоящее время:

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); 
} 

ответ

1

Вы можете изменить свой 2-й цикл для:

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

или

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

Для ваших целей я бы рекомендовал использовать OpenFileDialog, как это звучит, как вы просто нужно пользователю выбрать файл из каталога:

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

Это прекрасно работает - спасибо! –

+0

@DoN_Dan Нет проблем. Могу ли я также предложить вам проверить «OpenFileDialog», если этот браузер файлов предназначен только для поиска/выбора файлов в приложении. – Bassie

+0

. Спасибо. Идея состоит в том, что я могу выбрать файл в пользовательском пользовательском интерфейсе с открытием файла в фон при выборе. Я обязательно посмотрю :) –

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

даст вам этот фильтр.

+0

Спасибо - где бы я поместил этот кусок кода? –

+0

foreach (файл FileInfo в nodeDirInfo.GetFiles ("*. Xls")) –

+0

Спасибо - работает! –