В продолжение создания файлового менеджера на 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(); }
Поясните пожалуйста подробнее каким образом вы реализовывали это расширение функционала, не совсем понятно, каким образом осуществляется выбор производимой операции. Вы просто добавили в xaml listbox1 со списком операций? То есть как кнопки, а не контекстное меню?
ОтветитьУдалитьСкорее всего я делал контекстное меню, то есть выделялась строка и по правой кнопке вызывалось меню, где были эти методы
УдалитьСпасибо
ОтветитьУдалитьВот развитие идеи, с использованием многопоточности, и реализацией паттерна MVP. Если кому интересно - велком на Github - https://github.com/rhafizov/MyFirstFileManager
ОтветитьУдалить