C#从列表框文件列表中打开文件

时间:2011-04-24 07:27:17

标签: c# listbox

我这里有一个小问题。我想从列表框中的目录列出我的文件。当我双击文件时,我想在文本框中显示文件。

我有这个代码,但双击时我的目录是错误的。

说我双击battalionAPC.fbi 文本框中的目录diplay是C:\ Users \ Yvonne \ Documents \ Visual Studio 2010 \ Projects \ ListBoxTest \ ListBoxTest \ bin [Debug \ 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;
    }

}
}

3 个答案:

答案 0 :(得分: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()递归。

答案 1 :(得分:0)

您可以使用DirectoryInfo枚举文件并保留与单个文件关联的所有信息,因为DirectoryInfo返回FileInfo数组,将完整的文件名存储为好。

答案 2 :(得分:0)

在背景中保留一个与ListBox匹配的List。将值保留在该列表中的“entry1”中。

当他们双击ListBox中的项目时,您可以从列表中打开文件