2017-01-22 4 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

:あなただけのファイルを選択するために、ユーザーが必要なように、それは音としてあなたの目的のために

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

ありがとうございます。私はカスタムUI内でファイルを選択できます。背景を選択します。私は間違いなく見てみましょう:) –

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

はあなたにそのフィルタを提供します。あなたは、ループのためのあなたの第2回を変更することができ

+0

ありがとうございます - 私はこのコードをどこに置きますか? –

+0

foreach(nodeDirInfo.GetFiles( "*。xls")のFileInfoファイル) –

+0

ありがとう - ありがとう! –

関連する問題