private void MovePageTo(PageSliderPage page, PageSlider slider, int newIndex)
        {
            IDesignerHost dh = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
            IComponentChangeService cc = this.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
            ISelectionService ss = this.GetService(typeof(ISelectionService)) as ISelectionService;

            DesignerTransaction dt = dh.CreateTransaction("Moving page");
            if (cc != null)
                cc.OnComponentChanging(slider, TypeDescriptor.GetProperties(slider)["Controls"]);
            slider.Controls.SetChildIndex(page, newIndex);
            if (cc != null)
                cc.OnComponentChanged(slider, TypeDescriptor.GetProperties(slider)["Controls"], null, null);
            dt.Commit();
        }
 internal static bool SelectNextPage(PageSlider slider)
 {
     if (slider == null)
         return false;
     if (slider.PageCount > 0)
     {
         if (slider.SelectedPageIndex < slider.PageCount - 1)
             slider.SelectedPageIndex++;
         else
             slider.SelectedPageIndex = 0;
         return true;
     }
     return false;
 }
 internal static bool SelectPreviousPage(PageSlider slider)
 {
     if (slider == null)
         return false;
     if (slider.PageCount > 0)
     {
         if (slider.SelectedPageIndex > 0)
             slider.SelectedPageIndex--;
         else
             slider.SelectedPageIndex = slider.PageCount - 1;
         return true;
     }
     return false;
 }
        internal static PageSliderPage CreatePage(PageSlider parent, IDesignerHost dh, IComponentChangeService cc, ISelectionService ss)
        {
            DesignerTransaction dt = dh.CreateTransaction();
            PageSliderPage page = null;
            try
            {
                page = dh.CreateComponent(typeof(PageSliderPage)) as PageSliderPage;

                if (cc != null)
                    cc.OnComponentChanging(parent, TypeDescriptor.GetProperties(parent)["Controls"]);
                parent.Controls.Add(page);
                if (cc != null)
                    cc.OnComponentChanged(parent, TypeDescriptor.GetProperties(parent)["Controls"], null, null);

                if (ss != null)
                    ss.SetSelectedComponents(new PageSliderPage[] { page }, SelectionTypes.Replace);

                TypeDescriptor.GetProperties(parent)["SelectedPage"].SetValue(parent, page);
            }
            catch
            {
                dt.Cancel();
            }
            finally
            {
                if (!dt.Canceled)
                    dt.Commit();
            }

            return page;
        }