在一個項目中用到了TreeView,但是每次刷新TreeView的數據之后,所有的節點都會折疊起來
非常影響用戶體驗,使用下面的方法可以解決這個問題
string LastSelectNode = ""; //先保存當前選中的節點的key LastSelectNode = treeView1.SelectedNode.Name; //刷新數據 TreeView_Load_(); //查找節點並重新選中 SearchNodes(LastSelectNode, treeView1.Nodes[0]);
#region TreeView查找並選中節點 private void SearchNodes(string SearchText, TreeNode StartNode) { while (StartNode != null) { if (StartNode.Name.ToLower().Contains(SearchText.ToLower())) { // CurrentNodeMatches.Add(StartNode); treeView_AfterSelect_bit = false; treeView1.SelectedNode = StartNode; treeView1.SelectedNode.Expand(); treeView1.Select(); treeView_AfterSelect_bit = true; } if (StartNode.Nodes.Count != 0) { SearchNodes(SearchText, StartNode.Nodes[0]);//遞歸搜索 } StartNode = StartNode.NextNode; } } #endregion