// удалить помеченные файлы... public void DeleteCheckedFiles(ref BackgroundWorker bw, ref DoWorkEventArgs e, ListView lvResult) { int i = 0; ListView.CheckedListViewItemCollection checkedItems = lvResult.CheckedItems; foreach (ListViewItem lvi in checkedItems) { // Проверить флаг на остановку процесса if (bw.CancellationPending) { e.Cancel = true; // Выставить окончание - по отмене, сработает событие bwcmd_RunWorkerCompleted return; } else { string sFilePath = lvi.Text; if (File.Exists(sFilePath)) { File.Delete(sFilePath); if (m_Fast) { // пометка цветом и зачеркиванием удаленных книг с диска, но не из списка (быстрый режим удаления) WorksWithBooks.markRemoverFileInCopyesList(lvi); } m_bFilesWorked |= true; } bw.ReportProgress(++i); } } }
// ============================================================================================= // Реализация Copy/Move/Delete помеченных книг // ============================================================================================= #region еализация Copy/Move/Delete помеченных книг // копировать или переместить файлы в... public void CopyOrMoveCheckedFilesTo(ref BackgroundWorker bw, ref DoWorkEventArgs e, bool IsCopy, string SourceDir, string TargetDir, ListView lvResult, int nFileExistMode) { int i = 0; ListView.CheckedListViewItemCollection checkedItems = lvResult.CheckedItems; foreach (ListViewItem lvi in checkedItems) { // Проверить флаг на остановку процесса if ((bw.CancellationPending)) { e.Cancel = true; // Выставить окончание - по отмене, сработает событие bwcmd_RunWorkerCompleted return; } else { string FilePath = Path.Combine(SourceDir, lvi.Text); // есть ли такая книга на диске? Если нет - то смотрим следующую if (File.Exists(FilePath)) { string NewPath = Path.Combine(TargetDir, Path.GetFileName(FilePath)); FileInfo fi = new FileInfo(NewPath); if (!fi.Directory.Exists) { Directory.CreateDirectory(fi.Directory.ToString()); } if (File.Exists(NewPath)) { if (nFileExistMode == 0) { File.Delete(NewPath); } else { NewPath = FilesWorker.createFilePathWithSufix(NewPath, nFileExistMode); } } if (IsCopy) { File.Copy(FilePath, NewPath); } else { File.Move(FilePath, NewPath); if (!m_Fast) { lvResult.Items.Remove(lvi); } else { // пометка цветом и зачеркиванием удаленных книг с диска, но не из списка (быстрый режим удаления) WorksWithBooks.markRemoverFileInCopyesList(lvi); } } m_bFilesWorked |= true; bw.ReportProgress(++i); } } } }