/// <summary> /// Show the Next Step /// </summary> internal void Next() { IWizardForm now = prevsteps.Tail(); if (now == null) { return; } if (now.GetType().GetInterface("IWizardFinish", false) == typeof(IWizardFinish)) { IWizardFinish wf = (IWizardFinish)now; wf.Finit(); prevsteps = new Stack(); prevsteps.Push(step1); ShowStep(step1, true); } else { now.WizardWindow.Visible = false; now = now.Next; if (now == null) { return; } prevsteps.Push(now); ShowStep(now, true); } }
/// <summary> /// Display a new Step /// </summary> /// <param name="step">The Step you want to Show</param> void ShowStep(IWizardForm step, bool init) { Panel pn = step.WizardWindow; //this.Height = pn.Height + 320; pn.Visible = false; pn.Parent = this.pndrop; pn.Dock = DockStyle.None; pn.Anchor = ((System.Windows.Forms.AnchorStyles)(AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom)); pn.BackColor = Color.White; pn.Left = 16; pn.Top = 0; pn.Width = pndrop.Width - 2 * pn.Left; pn.Height = pndrop.Height - (pn.Top + llnext.Height); lbmsg.Text = step.WizardMessage; lbstep.Text = step.WizardStep.ToString(); //lbmsg.Left = lbstep.Left - lbmsg.Width; lbmsg.Width = lbstep.Left - lbmsg.Left + 2; llback.Enabled = (prevsteps.Count > 1); if (step.GetType().GetInterface("IWizardFinish", false) == typeof(IWizardFinish)) { llnext.Text = "Finish"; llnext.Enabled = true; } else { llnext.Text = "Next >"; llnext.Enabled = (step.Next != null); } llnext.Enabled = llnext.Enabled & step.CanContinue; llopt.Visible = (prevsteps.Count <= 1); bool show = true; if (init) { show = step.Init(new ChangedContent(this.ContentChanged)); } pn.Visible = show; lbmsg.SendToBack(); lbstep.SendToBack(); pbtop.SendToBack(); pbstretch.SendToBack(); }