|
前段时间做ASP.NET项目,发现里面的Wizard控件挺好用。后来在一个WinForm项目中也想用到类似的控件,却发现WinForm下并没有提供类似控件,上网搜索了一把,也没发现合意的,无奈之下,只有自己动手,丰衣足食!

要达到WebForm下Wizard控件的相似效果,关键的部分设计基本一样,各关键部分如下:
1. enum WizardStepType //向导的类型 2. class WizardStep //单步向导 3. class WizardStepCollection //向导集合 4. class WizardDesigner //提供设计时支持的向导类 5. class Wizard //主要的向导类
首先是WizardStepType的定义,这个与WebForm下的基本一样:
public enum WizardStepType
 {
Start,
Step,
Finish,
Complete
}
接着是WizardStep的定义,它的关键成员有以下几个: 1)bool AllowNext //是否允许向导跳到下一步 2) bool isLocked //向导是否处于锁定状态 3) WizardStepType StepType //向导类型 4) Cancel,Previous,Next,Finish Button //向导基本按钮
着重要介绍的是 向导基本按钮的实现:
private void InitStepButtons()
 {
CancelButton.Text = Cancel;
CancelButton.Size = new Size(94, 34);
CancelButton.Location = new Point(30, Height - 30 - CancelButton.Height);
CancelButton.FlatStyle = FlatStyle.System;
CancelButton.Click += CancelButton_Click;

FinishButton.Text = Finish;
FinishButton.Size = new Size(94, 34);
FinishButton.Location = new Point(Width - 30 - FinishButton.Width, Height - 30 - FinishButton.Height);
FinishButton.FlatStyle = FlatStyle.System;
FinishButton.Click += FinishButton_Click;

NextButton.Text = Next >;
NextButton.Size = new Size(94, 34);
NextButton.Location = new Point(FinishButton.Location.X - 30 - NextButton.Width, Height - 30 - FinishButton.Height);
NextButton.FlatStyle = FlatStyle.System;
NextButton.Click += NextButton_Click;

PreviousButton.Text = < Previous;
PreviousButton.Size = new Size(94, 34);
PreviousButton.Location = new Point(NextButton.Location.X - 30 - PreviousButton.Width, Height - 30 - FinishButton.Height);
PreviousButton.FlatStyle = FlatStyle.System;
PreviousButton.Click += PreviousButton_Click;

Controls.Add(PreviousButton);
Controls.Add(NextButton);
Controls.Add(FinishButton);
Controls.Add(CancelButton);
}

private void DrawWizardButton(WizardStepType steptype)
 {
  [1] [2] [3] [4] 下一页
WinForm 中的Wizard控件, 提供设计时支持! |