/// <include file='doc\TemplateEditingFrame.uex' path='docs/doc[@for="TemplateEditingFrame.Dispose"]/*' />
 public void Dispose()
 {
     if ((owner != null) && (owner.InTemplateMode))
     {
         owner.ExitTemplateMode(/*fSwitchingTemplates*/ false, /*fNested*/ false, /*fSave*/ false);
     }
     ReleaseParentElement();
     verb = null;
 }
        /// <include file='doc\TemplatedControlDesigner.uex' path='docs/doc[@for="TemplatedControlDesigner.ExitNestedTemplates"]/*' />
        /// <devdoc>
        ///     This method ensures that for a particular templated control designer when exiting
        ///     its template mode handles nested templates (if any). This is done by exiting the
        ///     inner most template frames first before exiting itself. Inside-Out Model.
        /// </devdoc>
        private void ExitNestedTemplates(bool fSave)
        {
            try {
                IComponent    component = Component;
                IDesignerHost host      = (IDesignerHost)component.Site.GetService(typeof(IDesignerHost));

                ControlCollection children = ((Control)component).Controls;
                for (int i = 0; i < children.Count; i++)
                {
                    IDesigner designer = host.GetDesigner((IComponent)children[i]);
                    if (designer is TemplatedControlDesigner)
                    {
                        TemplatedControlDesigner innerDesigner = (TemplatedControlDesigner)designer;
                        if (innerDesigner.InTemplateMode)
                        {
                            innerDesigner.ExitTemplateMode(/*fSwitchingTemplates*/ false, /*fNested*/ true, /*fSave*/ fSave);
                        }
                    }
                }
            }
            catch (Exception ex) {
                Debug.Fail(ex.ToString());
            }
        }