/// <summary> /// 删除节点 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void DeleteMenuItem(object sender, EventArgs e) { MenuTreeNode curNode = menuTreeView.SelectedNode as MenuTreeNode; if (curNode.Nodes.Count > 0) DeleteNodes(curNode); else { curNode.Record.Delete(); curNode.Remove(); } } /// <summary> /// 递归删除节点,特别说明:递归删除节点不能用foreach和for,因为节点删除后,下次迭代目标是null,不过递减方式遍历也许可以 /// </summary> /// <param name="node">待删除的节点</param> void DeleteNodes(MenuTreeNode node) { MenuTreeNode tmpNode = node; while (tmpNode != null) { if (tmpNode.Nodes.Count > 0) { DeleteNodes((MenuTreeNode)tmpNode.Nodes[0]); } MenuTreeNode aNode = tmpNode; tmpNode = (MenuTreeNode)tmpNode.NextNode; aNode.Record.Delete(); aNode.Remove(); }