Создать несколько папок, названных в честь элементов ListBox - PullRequest
0 голосов
/ 25 апреля 2019

Нажатие на кнопку Get List:

  1. Я заполняю ListBox именами файлов, содержащимися в выбранном.
  2. Затем я разделяю расширения файлов и добавляю еще один ListBox, удаляя dot .

Нажатие на кнопку Create Folders,

Я хочу удалить дубликаты расширений и создать папки, названные в честь элементов в ListBox.
создать папки с именами: doc, docx, dwg и т. д.

private void btn_list_Click(object sender, EventArgs e)
{
    listBox_ex.Items.Clear();
    FolderBrowserDialog FBD = new FolderBrowserDialog();
    if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        lbl_path.Text = FBD.SelectedPath;
        listBox_name.Items.Clear();
        string[] filename = Directory.GetFiles(FBD.SelectedPath);

        foreach (string file in filename)
        {
            listBox_name.Items.Add(Path.GetFileName(file));
            listBox_ex.Items.Add(Path.GetExtension(file).Replace(".", ""));                  
        }
    }
}

private void btn_CreateFolder_Click(object sender, EventArgs e)
{
    FolderBrowserDialog FBD2 = new FolderBrowserDialog();
    if (FBD2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
        lbl_pathCreated.Text = FBD2.SelectedPath;
    }

    string path = lbl_pathCreated.Text;
    if (!Directory.Exists(path)) {
        Directory.CreateDirectory(path);
    } else {
        MessageBox.Show("already exit");
    }
}

ListBox filled with File names and file extensions

1 Ответ

1 голос
/ 25 апреля 2019

Альтернативный метод, использующий 2 List<string> объекты для хранения выбора текущих файлов и расширений файлов как Отдельные , Упорядоченные элементы.

Списки затем используются в качестве ListBox.DataSource .
A ListBox.Items Сброс сбрасывается при изменении источника данных.

Когда выбран целевой путь, каждый элемент в списке расширений используется для создания каталога по выбранному пути.
Нет необходимости проверять, существует ли уже каталог: Directory.CreateDirectory() просто игнорирует это.

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

List<string> fileNames = null;
List<string> fileExtensions = null;

private void btn_list_Click(object sender, EventArgs e)
{
    using (FolderBrowserDialog fbd = new FolderBrowserDialog())
    {
        if (fbd.ShowDialog() == DialogResult.OK)
        {
            lbl_path.Text = fbd.SelectedPath;
            fileNames = Directory.GetFiles(fbd.SelectedPath).ToList();
            fileExtensions = fileNames.Select(item => 
                Path.GetExtension(item).Replace(".", "")).Distinct().OrderBy(n => n).ToList();
            listBox_name..DataSource = fileNames.Select(f => Path.GetFileName(f)).ToList();
            listBox_ex.DataSource = fileExtensions;
        }
    }
}

private void btn_CreateFolder_Click(object sender, EventArgs e)
{
    using (FolderBrowserDialog fbd = new FolderBrowserDialog())
    {
        if (fbd.ShowDialog() == DialogResult.OK)
        {
            lbl_pathCreated.Text = fbd.SelectedPath;
            fileExtensions.ForEach(item => 
                Directory.CreateDirectory(Path.Combine(fbd.SelectedPath, item)));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...