private void OnFilterListClicked(object sender, EventArgs e) { if (e is MouseEventArgs mouse && mouse.Button == MouseButtons.Left && filterList.SelectedItems.Count > 0) { ContextMenuStrip cms = sender as ContextMenuStrip; object selectedItem = filterList.SelectedItem; filterList.Items.Remove(selectedItem); var toolStripItem = cms?.GetItemAt(mouse.Location); if (toolStripItem != null) { if (toolStripItem.Text == "Open in file explorer") { try { System.Diagnostics.Process.Start("explorer.exe", selectedItem.ToString()); } catch (Exception ex) { RedundantFileRemover.LogException(ex.Message + " " + ex.StackTrace); MessageBox.Show("File not found", "The file to open does not exist: " + ex.Message, MessageBoxButtons.OK); } } else if (toolStripItem.Text == "Remove from list") { FileDataReader.ProgramSettings.SettingsWindow.IgnoredDirectories.Remove(selectedItem.ToString()); } } if (filterList.Items.Count == 0) { removeFilters.Enabled = false; } if (cms != null) { cms.Close(); } filterList.SelectedItems.Clear(); } }
private static void CollectAccessibleFiles(DirectoryInfo directoryInfo, string sp, bool isDir) { try { var directories = directoryInfo.EnumerateDirectories() .Where(d => !d.FullName.Replace(" ", "").Contains("RedundantFileRemover")) .Where(d => IsNotSpecialFolder(d.Name)) .Where(d => IsFileNotHidden(d)).ToArray(); if (isDir) { for (int i = 0; i < directories.Length; i++) { if (directories[i].Exists) { try { var dirInfo = directories.ElementAt(i); accessibleFiles.Add(dirInfo); if (FileDataReader.ProgramSettings.SettingsWindow.SearchInSubDirectories) { CollectAccessibleFiles(dirInfo, sp, isDir); } } catch (Exception ex) { RedundantFileRemover.LogException(ex.Message + " " + ex.StackTrace); } } } } else { for (int i = 0; i < directories.Length; i++) { try { if (!directories.ElementAt(i).Exists) { continue; } foreach (FileInfo fileInfo in directories[i].GetFiles('*' + sp)) { try { if (fileInfo.Exists && IsFileNotHidden(fileInfo)) { accessibleFiles.Add(fileInfo); } } catch (Exception exe) { RedundantFileRemover.LogException(exe.Message + " " + exe.StackTrace); } } if (FileDataReader.ProgramSettings.SettingsWindow.SearchInSubDirectories) { CollectAccessibleFiles(directories[i], sp, isDir); } } catch (Exception ex) { RedundantFileRemover.LogException(ex.Message + " " + ex.StackTrace); } } } } catch (Exception ex) { RedundantFileRemover.LogException(ex.StackTrace + " " + ex.Message); } }