2011-04-24 103 views
0

我在這裏有一個小問題。我想從列表框中的目錄列出我的文件。當我雙擊文件我想在文本框中顯示文件。C#從列表框文件列表中打開文件

我得到了這段代碼,但雙擊時我的目錄是錯誤的。

說我雙擊battalionAPC.fbi 在文本框中的目錄diplay是C:\用戶\伊馮娜\文檔\ Visual Studio 2010的\項目\ ListBoxTest \ ListBoxTest \ BIN [調試\ battalionAPC.fbi]

但正確的目錄應該是這樣的: C:\ Users \ Yvonne \ Documents \ Visual Studio 2010 \ Projects \ ListBoxTest \ ListBoxTest \ bin [units \ battalion \ APC \ battalionAPC.fbi]

**使用[]括號

任何想法如何我可以得到正確的目錄?

我全碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 

namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 


    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void populateList(string path) 
    { 
     string[] dir = Directory.GetDirectories(path); 
     foreach (string d in dir) 
     { 

      string entry = Path.GetFileName(d); 
      //listBox1.Items.Add(entry); 
      populateList(d); 
     } 
     string[] files = Directory.GetFiles(path); 

     foreach (string f in files) 
     { 
      string entry1 = Path.GetFullPath(f); 

      string entry = Path.GetFileName(f); 
      if (entry.Contains(".fbi")) 
      { 
      listBox1.Items.Add(entry); 
      } 
     } 
    } 

    private void Form1_Load_1(object sender, EventArgs e) 
    { 
     populateList(@"..\units\battalion"); 
    } 


    private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string file = listBox1.SelectedItem.ToString(); 
     textBox1.Text = file; 

     string all = Path.GetFullPath(file); 
     textBox2.Text = all; 
    } 

} 
} 

回答

2
private void populateList(string path) 
{ 
    string[] files = Directory.GetFiles(path, "*.fbi", SearchOption.AllDirectories); 
    foreach (string f in files) 
    { 
     string entry1 = Path.GetFullPath(f); 
     string entry = Path.GetFileName(f); 
     listBox1.Items.Add(entry); 
    } 
} 

您可以通過使用帶有三個參數的變化使用Directory.GetFiles()來爲你做更多的工作。第二個參數已經將找到的文件限制爲擴展名爲.fbi的文件,並且SearchOption.AllDirectories處理將進入子目錄,因此您不必再使用populateList()遞歸。

+0

謝謝!幫助很多= D – New27 2011-04-24 08:51:53

0

可以以枚舉文件,並保持與單個文件相關聯的所有信息使用DirectoryInfo,因爲DirectoryInfo返回FileInfo陣列,存儲完整的文件名好。

0

在與ListBox匹配的背景中保留一個List。將值保存在該列表中的「entry1」中。

當他們在列表框上增加一倍的項目點擊,從列表中打開文件