我正在开发一个 ASP.NET 4.0 Web 应用程序,并且我正在使用 TreeView 控件。我有一个问题,我真的不明白为什么会这样。我有与树项目关联的复选框。
如果未选中该复选框,则一切正常,但是当我执行以下行时:
node.ChildNodes.Clear();
如果选中该节点的复选框,则在 Clear() 之后 node.Parent 为空。如果未选中,则 parent 仍然正确。我真的不明白为什么清除子节点集合也会清除我的父引用。我实际上没有在此调用中使用或修改选中的属性。我也 100% 确定我的父母也不是我节点的孩子(如果检查与否,为什么会有所不同)。
为了使代码按预期工作,我需要使用的解决方法是:
TreeNode[] checkedNodes = new TreeNode[tvResults.CheckedNodes.Count];
tvResults.CheckedNodes.CopyTo(checkedNodes, 0);
foreach (TreeNode checkedNode in checkedNodes) // Uncheck all nodes temporary.
checkedNode.Checked = false;
node.ChildNodes.Clear(); // Now it is ok to clear and parent is "saved".
foreach (TreeNode checkedNode in checkedNodes) // Recheck all checked nodes again.
checkedNode.Checked = true;
有人知道这个问题吗?
谢谢, 马蒂亚斯
PS!请善待,这是我有史以来的第一个问题......