拥有带树视图的经典Winforms应用程序。
可以使用复选框(应用过滤器y / n)过滤树视图中的节点。
过滤器删除的节点将保存到字典中,因此如果未选中过滤器复选框,则可以恢复这些节点。
字典中节点的恢复进展顺利。节点在正确的位置正确恢复。
问题是我在恢复节点后无法对树视图进行排序。
当我尝试调用treeview.Sort()时,我得到一个nullreference异常。
我已经尝试覆盖treeview.TreeViewNodeSorter(),但看起来异常不是由节点的比较引起的。
据我所知,比较完成后出现nullreference异常,Sort()即将关闭并退出。
你们之前有没有见过这样的行为? - 你可以分享一个解决它的技巧吗?
代码(导致异常的tvData.Sort()调用):
foreach(TreeNode currentNode in removedTreeNodes.Keys)
{
if (removedTreeNodes[currentNode] == null)
{
tvData.Nodes.Add(currentNode);
}
foreach(TreeNode creator in tvData.Nodes)
{
if(creator == removedTreeNodes[currentNode])
{
creator.Nodes.Add(currentNode);
}
}
}
removedTreeNodes = new Dictionary<TreeNode, TreeNode>();
if (tvData.SelectedNode != null)
{
TreeNode selectedNode = tvData.SelectedNode;
tvData.Sort();
tvData.SelectedNode = tvData.FindNodeByTagId(selectedNode);
}
else
{
tvData.Sort();
}