private void UpdateCommands() { FindSteamFolder.RaiseCanExecuteChanged(); AddFolder.RaiseCanExecuteChanged(); RemoveFolder.RaiseCanExecuteChanged(); Search.RaiseCanExecuteChanged(); DeletePackages.RaiseCanExecuteChanged(); }
public void Managing_list_folders(TreeNode node, bool ClsChildNodes) { if (node.Checked) { if (!list_folders.ContainsKey(node.Tag)) { list_folders.Add(node.Tag, node.Tag); if (AddFolder != null) { AddFolder.Invoke(node.Tag); } } Hashtable to_remove = new Hashtable(20); foreach (object path in list_folders.Keys) { string input = string.Empty; string pattern = string.Empty; if (path.ToString().Length > node.Tag.ToString().Length) { input = path.ToString(); pattern = node.Tag.ToString(); } else { input = node.Tag.ToString(); pattern = path.ToString(); } bool cmp = input.Contains(pattern); //если выбранная папка ближе к корню, чем ранее выбранная if ((cmp) && //так вот если она есть (path.ToString() != node.Tag.ToString()) && //и не равна самой себе (path.ToString().Split(Convert.ToChar("\\")).Length != node.Tag.ToString().Split(Convert.ToChar("\\")).Length) //и их уровни вложенности разные ) { if (!to_remove.ContainsKey((object)input)) { to_remove.Add((object)input, (object)input);//то ранее выбранная идет в топку } if (RemoveFolder != null) { RemoveFolder.Invoke(path); } } } foreach (object path in to_remove.Keys) { list_folders.Remove((object)path); } if (ClsChildNodes) { node.Nodes.Clear(); } //MessageBox.Show(list_folders.Count.ToString() + "/" + to_remove.Count.ToString()); } else { list_folders.Remove(node.Tag); if (RemoveFolder != null) { RemoveFolder.Invoke(node.Tag); } } }