예제 #1
0
 private void Image_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
 {
     if (SelectedItem is null)
     {
         return;
     }
     RemoveFile?.Invoke(this, new FileSelectedEventArgs(SelectedItem.Value.ID));
 }
        public void Managing_list_Files(TreeNode node, bool ClsChildNodes)
        {
            //должны быть ключи - именами, а значения - путями :)
            if (node.Checked)
            {
                if (!list_files.ContainsKey(node.Tag))
                {
                    list_files.Add(node.Tag, node.Tag);

                    if (AddFile != null)
                    {
                        AddFile.Invoke(node.Tag);
                    }
                }

                Hashtable to_remove = new Hashtable(20);

                foreach (object path in list_files.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 (RemoveFile != null)
                        {
                            RemoveFile.Invoke(path);
                        }
                    }
                }

                foreach (object path in to_remove.Keys)
                {
                    list_files.Remove((object)path);
                }

                if (ClsChildNodes)
                {
                    node.Nodes.Clear();
                }
                //MessageBox.Show(list_files.Count.ToString() + "/" + to_remove.Count.ToString());
            }
            else
            {
                list_files.Remove(node.Tag);
                if (RemoveFile != null)
                {
                    RemoveFile.Invoke(node.Tag);
                }
            }
        }
예제 #3
0
 private void _removeItem_Click(object sender, RoutedEventArgs e)
 {
     RemoveFile?.Invoke(this, EventArgs.Empty);
 }