Winforms treeview sort()导致null引用异常

时间:2016-09-26 07:33:37

标签: c# winforms sorting treeview

拥有带树视图的经典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();
}

0 个答案:

没有答案