private void RefreshBoard()
        {
            Cursor.Current = Cursors.WaitCursor;

            try
            {
                UndoRedoManager.Instance.Clear();

                SudokuSolutionNode selected_node = solutionsTree.SelectedSolutionNode;
                SudokuSolution     selected_sol  = solutionsCheckedListBox.SelectedSolution;

                foreach (TreeNode node in solutionsTree.Nodes)
                {
                    SudokuSolutionNode sol_node = solutionsTree.TreeNodeToSolutionNode(node);
                    if (sol_node.State == SudokuSolutionNodeState.Solution)
                    {
                        sol_node.Parent.RemoveNodes(sol_node);
                    }
                }

                SudokuSolutionNode last = solutionsTree.TreeNodeToSolutionNode(solutionsTree.Nodes.Cast <TreeNode>().Last());
                last.RemoveNodes();
                SudokuSolutionNode root = SudokuSolutionNode.CreateTree(solutionsTree.SelectedSolutionNode.Root);

                solutionsTree.UpdateTree(root, solutionsTree.SelectedSolutionNode);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }