//make sure qu'il n'y a QUE la page en cour qui est visible et qu'elle a la bonne position private void RefreshPageVisibility() { if (this.IsRunningAnyPage) { for (int TheIndex = 0; TheIndex <= this.listAllPage.Count - 1; TheIndex++) { iPage p = this.listAllPage[TheIndex]; Form fp = (Form)p; if (TheIndex == this.ActualPageIndex) { if (!fp.Visible) { fp.Show(); this.RefreshPageSize(fp); } } else { if (fp.Visible) { fp.Hide(); } } } } }
private void ActivatePageAtIndex(int IndexToActivate, bool IgnoreAlreadyActivatedPage = false) { //met en pause la page actuellement executer s'il y en a une if (!IgnoreAlreadyActivatedPage) { if (this.IsRunningAnyPage) { this.PauseActualPage(); } } //active l'index en question s'il existe if (IndexToActivate >= this.MinPageIndex && IndexToActivate <= this.MaxPageIndex) { iPage ActualPage = this.listAllPage[IndexToActivate]; Form fActualPage = (Form)ActualPage; this.ActualPageIndex = IndexToActivate; ActualPage.Start(); //make sure que les bordure sont les bonne if (fActualPage.FormBorderStyle != FormBorderStyle.None) { fActualPage.FormBorderStyle = FormBorderStyle.None; } //make sure qu'elle a la bonne visibiliter if (!fActualPage.Visible) { fActualPage.Show(); } } }
public void Navigate(iPage NextPage) { int saveActualPageIndex = this.ActualPageIndex; //effectue une save parce qu'il va surement changer //s'il y a deja une page en execution, il va la mettre en pause if (this.IsRunningAnyPage) { this.PauseActualPage(); } //s'il y a des page qui suive l'index actuel, il les delete if (this.MaxPageIndex > saveActualPageIndex) { this.RemoveAllPageAfterIndex(saveActualPageIndex); } //ajoute la prochaine page this.listAllPage.Add(NextPage); Form fNextPage = (Form)NextPage; fNextPage.MdiParent = this.forme; fNextPage.StartPosition = FormStartPosition.Manual; //this.ActualPageIndex = this.listAllPage.IndexOf(NextPage); NextPage.Initialize(this); this.ActivatePageAtIndex(this.listAllPage.Count - 1); //NextPage est actuellement a la fin de la liste fNextPage.TextChanged += new EventHandler(this.AnyPageForm_TextChanged); this.RefreshActualPageSize(); this.RefreshTitle(); }
//delete toute les page qui se trouve APRES EndIndex private void RemoveAllPageAfterIndex(int EndIndex) { while (this.MaxPageIndex > EndIndex) { iPage ActualPage = this.listAllPage[this.listAllPage.Count - 1]; Form fActualPage = (Form)ActualPage; fActualPage.TextChanged -= new EventHandler(this.AnyPageForm_TextChanged); ActualPage.Destroy(); this.listAllPage.RemoveAt(this.listAllPage.Count - 1); } GC.Collect(); //pour debarasser la memoire des page deleter }
//ces void servent a la gestion des page private void PauseActualPage() { if (this.IsRunningAnyPage) { iPage ActualPage = this.listAllPage[this.ActualPageIndex]; ActualPage.Pause(); this.ActualPageIndex = -1; Form fActualPage = (Form)ActualPage; //make sure qu'elle a la bonne visibiliter if (fActualPage.Visible) { fActualPage.Hide(); } } }
private void RefreshPageSize(iPage ThePage) { this.RefreshPageSize((Form)ThePage); }