C # Открыть файлы из списка файлов списка - PullRequest
0 голосов
/ 24 апреля 2011

У меня здесь небольшая проблема.Я хочу перечислить мои файлы из каталога в списке.и когда я дважды щелкаю файлы, я хочу отобразить файл в текстовом поле.

Я получил этот код, но мой каталог при двойном щелчке неверен.

Допустим, я дважды щелкнул battalionAPC.fbi. Отображение каталога в текстовом поле: 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 [ед. \ Батальон \ 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 ]

2 голосов
/ 24 апреля 2011
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 голосов
/ 24 апреля 2011

сохранить список в фоновом режиме, который соответствует ListBox. Сохраните значение в «entry1» в этом списке.

Когда они дважды щелкают по элементу в ListBox, вы открываете файл из списка

0 голосов
/ 24 апреля 2011

Вы можете использовать DirectoryInfo , чтобы перечислять файлы и хранить всю информацию, связанную с отдельными файлами, поскольку DirectoryInfo возвращает массив FileInfo, в котором также хранится полное имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...