-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;
}
}
}
}