2017-12-27 26 views
-1

ツリービューをフィルタリングした後に選択されたツリーを維持する ツリービューをフィルタリングします。チェックノードがある場合、チェックされたノードをフィルタリングされたツリービューに保ちたいフィルタを削除すると、ノードをチェックする必要があります。 私は何か間違っている、フィルターが動作しますが、私は小切手を緩める。フィルタリング後に選択されたツリーを維持する

List<string> ListCheckboxItems = new List<string>(); //create a list from the checkedlistbox itmes 
List<string> KeepSelectedItems = new List<string>(); //Create a list with the selected items 


     private void textBox1_TextChanged(object sender, EventArgs e) //new 24-12-2017 
     { 
      var filteredItems = ListCheckboxItems.Where(item => item.Contains(textBox1.Text)); 

      List<string> FilterList = filteredItems.ToList(); 


      treeViewFilter.Nodes.Clear();   //remove all nodes 
      foreach (object item in FilterList)  //Fill it again with only the filtered items 
      { 
       treeViewFilter.Nodes.Add(item.ToString()); //new 24-12-2017 
      } 

      foreach (string keepitem in KeepSelectedItems) //Keep the items checked when filter starts 
      { 
       TreeNode[] arr = treeViewFilter.Nodes.Find(keepitem, true); 

       foreach (TreeNode s in arr) 
       { 
        treeViewFilter.SelectedNode = s; 
        s.Checked = true; 
       } 
      } 

      //check if empty the put the original list back 
      if (textBox1.Text == string.Empty) //park the checked items 
      { 
       foreach (string item in KeepSelectedItems) 
       { 
        TreeNode[] arr = treeViewFilter.Nodes.Find(item, true); 
        foreach (TreeNode s in arr) 
        { 
         treeViewFilter.SelectedNode = s; 
         s.Checked = true; 
        } 
       } 
      } 
     } 

答えて

0

私はそれを見つけました。 :

private void textBox1_TextChanged(object sender, EventArgs e) //new 24-12-2017 
     { 
      var filteredItems = ListTreeViewItems.Where(item => item.Contains(textBox1.Text)); 

      List<string> FilterList = filteredItems.ToList(); 


      treeViewFilter.Nodes.Clear();   //remove all nodes 
      foreach (object item in FilterList)  //Fill it again with only the filtered items 
      { 
       TreeNode aNode = new TreeNode(item.ToString()) { Name = item.ToString() }; //THIS LINE IS THE SOLUTION 
       treeViewFilter.Nodes.Add(aNode); 
      } 

      //zet de vinkjes weer terug 
      foreach (string keepitem in KeepSelectedItems) //Keep the items checked when filter starts 
      { 


       TreeNode[] arr = treeViewFilter.Nodes.Find(keepitem, true); 

       Logging.WriteToLog("", "treeViewFilter.Nodes.Find(keepitem, true); " + treeViewFilter.Nodes.Find(keepitem, true)); 
       // Logging.WriteToLog("", "test " + test); 

       foreach (TreeNode s in arr) 
       { 
        treeViewFilter.SelectedNode = s; 
        s.Checked = true; 
       } 
      } 

      //check if empty the put the original list back 
      if (textBox1.Text == string.Empty) //park the checked items 
      { 
       foreach (string item in KeepSelectedItems) 
       { 
        TreeNode[] arr = treeViewFilter.Nodes.Find(item, true); 
        foreach (TreeNode s in arr) 
        { 
         treeViewFilter.SelectedNode = s; 
         s.Checked = true; 
        } 
       } 
      } 
     } 
関連する問題