Поиск по этому блогу

среда, 3 октября 2012 г.

WPF file explorer часть 2

В продолжение создания файлового менеджера на WPF. Сегодня решил немного улучшить программу  и добавил несколько функций:

  • открытие выделенного файла в списке
  • копирование выделенного файла в списке (копирование из одной папки в другую)
  • удаление выделенного файла в списке (удаление файла из папки)
  • выделение всех файлов в списке


Открытие


private void Open_selectItem(object sender, RoutedEventArgs e)
        {
            FileInfo filinf = listBox1.SelectedItem as FileInfo;
            try 
            {
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = filinf.FullName;
                p.Start();
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }



Копирование



private void Copy_selectItem(object sender, RoutedEventArgs e)
        {
            FileInfo fiInf = listBox1.SelectedItem as FileInfo;
            listBox1.SelectionMode = SelectionMode.Single;
            var dialog = new System.Windows.Forms.FolderBrowserDialog();
            dialog.ShowDialog();
            string dir = System.IO.Path.Combine(dialog.SelectedPath, fiInf.ToString());
            string fname = fiInf.FullName;
            try 
            {
                File.Copy(fname, dir);
                MessageBox.Show("Файл скопирован");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Не удается скопировать файл из-за исключения: " + ex.Message);
                
            }
        }

Удаление 



private void Delete_selectItem(object sender, RoutedEventArgs e)
        {
            listBox1.SelectionMode = SelectionMode.Single;
            FileInfo fiInf = listBox1.SelectedItem as FileInfo;
            File.Delete(fiInf.FullName);
            // Проверяем выделен ли хотя бы один элемент списка
            if (listBox1.SelectedItems.Count == 0)
            {
                MessageBox.Show("Выделите строку");
            }
            else if (listBox1.SelectedItems.Count > 0)
            {
                listBox1.Items.Remove(listBox1.SelectedItems[0]);
            }
        }


Полное выделение списка(выделяем всё, что находится в  listbox)






private void selectAllitem(object sender, RoutedEventArgs e)
        {
            listBox1.SelectionMode = SelectionMode.Multiple;
            //смена SelectionMode нужна для того, чтобы выделить всё в списке
            //при команде копировать SelectionMode стоит в позиции Single
            listBox1.SelectAll();
        }

4 комментария:

  1. Поясните пожалуйста подробнее каким образом вы реализовывали это расширение функционала, не совсем понятно, каким образом осуществляется выбор производимой операции. Вы просто добавили в xaml listbox1 со списком операций? То есть как кнопки, а не контекстное меню?

    ОтветитьУдалить
    Ответы
    1. Скорее всего я делал контекстное меню, то есть выделялась строка и по правой кнопке вызывалось меню, где были эти методы

      Удалить
  2. Вот развитие идеи, с использованием многопоточности, и реализацией паттерна MVP. Если кому интересно - велком на Github - https://github.com/rhafizov/MyFirstFileManager

    ОтветитьУдалить