2011-04-24 101 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”中。

当他们在列表框上增加一倍的项目点击,从列表中打开文件