关于 syncfusion-winforms-wizard-control
这是一项在 Windows Forms 中实现 Syncfusion WizardControl 的参考技能,面向需要构建多页引导流程的开发者,涵盖导航、验证和外观配置。
主要功能
- 01管理向导页面及顺序
- 02配置后退、下一步和完成按钮
- 03在导航前验证页面
- 04自定义横幅、主题和布局
- 05处理页面与导航事件
适用场景
- 01创建软件安装向导
- 02引导用户填写注册表单
- 03构建带验证的数据录入流程
- 04实现分步配置界面
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ winforms-ui-components-skills --skill syncfusion-winforms-wizard-control安装后在 Claude Code 中输入/syncfusion-winforms-wizard-control确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/appearance-customization.mdbanner-configuration.mddesign-time-features.mdgetting-started.mdnavigation-buttons.mdpage-validation-events.mdwizard-pages.md详细介绍
在 Windows Forms 中实现 WizardControl
本技能将指导你在 Windows Forms 应用程序中实现 Syncfusion WizardControl 组件。WizardControl 提供丰富的交互式界面,可将复杂任务拆分为简单的连续步骤,并通过引导式导航帮助用户完成任务。
何时使用此技能
在用户需要以下功能时使用此技能:
- 创建多步骤安装或设置向导
- 实现带有“上一步”/“下一步”导航的连续表单
- 为复杂数据录入构建引导式工作流
- 设计分步配置界面
- 创建包含多个页面的入门体验
- 实现用于完成任务的向导式对话框
- 引导用户收集分类数据
- 构建具有进度跟踪功能的注册或结账流程
组件概述
WizardControl 是一个多页容器,可通过自动管理导航按钮,引导用户完成连续任务。
主要功能:
- 多页管理 — WizardControlPage 集合支持灵活排序
- 导航按钮 — 可按页面控制“上一步”“下一步”“取消”“完成”和“帮助”按钮的显示状态
- 横幅面板 — 提供包含标题、说明和图像的页眉,用于呈现上下文信息
- 页面验证 — 使用 ValidatePage 事件在导航前验证数据
- 设计时支持 — 智能标记、集合编辑器和可视化页面导航
- 灵活布局 — 支持 FullPage 模式、自定义按钮位置和 BannerPanel 自定义
- 事件系统 — 支持页面生命周期事件、按钮单击事件和导航事件
- 主题支持 — 通过 Style 属性全面自定义外观
- RTL 支持 — 为国际化应用提供从右到左的布局
程序集: Syncfusion.Tools.Windows.dll
命名空间: Syncfusion.Windows.Forms.Tools
依赖项: 6 个程序集(Grid.Base、Grid.Windows、Shared.Base、Shared.Windows、Tools.Base、Tools.Windows)
文档与导航指南
入门
📄 阅读: references/getting-started.md
阅读时机:
- 首次设置 WizardControl
- 了解程序集要求和安装方法
- 通过设计器或代码添加控件
- 创建包含多个页面的基础向导
- 配置 WizardContainer 和 WizardControlPages
- 排查设置问题
向导页面
📄 阅读: references/wizard-pages.md
阅读时机:
- 创建和管理 WizardControlPage 集合
- 设置页面标题和说明
- 配置 FullPage 属性以隐藏横幅
- 使用集合编辑器或属性重新排列页面
- 为自定义顺序设置 NextPage 和 PreviousPage
- 在设计时和运行时访问页面
- 构建包含动态内容的多页向导
导航按钮
📄 阅读: references/navigation-buttons.md
阅读时机:
- 控制按钮的显示状态(BackVisible、NextVisible 等)
- 按页面启用或禁用按钮
- 在最后一页添加“完成”按钮
- 在向导中创建自定义按钮
- 使用 GridBagLayout 调整按钮顺序
- 自定义按钮外观(FlatStyle、颜色、图像)
- 访问 BackButton、NextButton、CancelButton 属性
横幅配置
📄 阅读: references/banner-configuration.md
阅读时机:
- 使用渐变背景配置 BannerPanel
- 设置 Banner 属性以指定页眉图像
- 自定义 Title 和 Description 标签
- 使用 AutoLayoutBanner/Title/Description 属性
- 向横幅区域添加自定义控件
- 设置标题和说明文本的样式
- 创建品牌化的向导页眉
页面验证和事件
📄 阅读: references/page-validation-events.md
阅读时机:
- 使用 ValidatePage 事件实现页面验证
- 处理导航事件(BeforeNext、BeforeBack、BeforeFinish)
- 响应按钮点击(BackClick、NextClick 等)
- 使用 PageLoad 事件初始化页面
- 实现自定义页面序列
- 根据验证结果取消导航
- 使用 BackButtonCausesValidation 属性
外观自定义
📄 阅读: references/appearance-customization.md
阅读时机:
- 自定义向导和页面背景
- 设置文本的字体和颜色
- 配置边框样式(Fixed3D、FixedSingle)
- 为 BannerPanel 设置渐变效果
- 使用 Style 属性应用主题
- 创建浅色/深色模式向导
- 匹配应用品牌风格
设计时功能
📄 阅读: references/design-time-features.md
阅读时机:
- 使用智能标记执行向导操作
- 在设计时添加/移除页面
- 在设计器中切换页面
- 使用集合编辑器管理页面
- 在属性网格中配置属性
- 了解 SelectedWizardPage 属性
- 使用 CardLayout 属性
快速入门示例
基本安装向导
C#:
using System;
using System.Drawing;
using System.Windows.Forms;
using Syncfusion.Windows.Forms.Tools;
public partial class InstallationWizard : Form
{
private WizardControl wizardControl1;
private WizardControlPage welcomePage;
private WizardControlPage licensePage;
private WizardControlPage installPage;
private WizardControlPage finishPage;
public InstallationWizard()
{
InitializeComponent();
CreateWizard();
}
private void CreateWizard()
{
// Create wizard control
wizardControl1 = new WizardControl
{
Dock = DockStyle.Fill,
Style = Syncfusion.Windows.Forms.Tools.Wizard.Style.Metro
};
// Create pages
welcomePage = new WizardControlPage
{
Title = "Welcome",
Description = "Welcome to the Installation Wizard",
BackVisible = false // Hide Back on first page
};
licensePage = new WizardControlPage
{
Title = "License Agreement",
Description = "Please read and accept the license terms"
};
installPage = new WizardControlPage
{
Title = "Installing",
Description = "Please wait while files are being installed"
};
finishPage = new WizardControlPage
{
Title = "Completed",
Description = "Installation completed successfully",
NextVisible = false,
CancelVisible = false,
FinishVisible = true
};
// Add pages to wizard
wizardControl1.WizardPages = new WizardControlPage[]
{
welcomePage,
licensePage,
installPage,
finishPage
};
// Add wizard to form
this.Controls.Add(wizardControl1);
this.Text = "Setup Wizard";
this.Size = new Size(600, 450);
}
}
VB.NET:
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Syncfusion.Windows.Forms.Tools
Public Partial Class InstallationWizard
Inherits Form
Private wizardControl1 As WizardControl
Private welcomePage As WizardControlPage
Private licensePage As WizardControlPage
Private installPage As WizardControlPage
Private finishPage As WizardControlPage
Public Sub New()
InitializeComponent()
CreateWizard()
End Sub
Private Sub CreateWizard()
' Create wizard control
wizardControl1 = New WizardControl With {
.Dock = DockStyle.Fill,
.Style = Syncfusion.Windows.Forms.Tools.Wizard.Style.Metro
}
' Create pages
welcomePage = New WizardControlPage With {
.Title = "Welcome",
.Description = "Welcome to the Installation Wizard",
.BackVisible = False
}
licensePage = New WizardControlPage With {
.Title = "License Agreement",
.Description = "Please read and accept the license terms"
}
installPage = New WizardControlPage With {
.Title = "Installing",
.Description = "Please wait while files are being installed"
}
finishPage = New WizardControlPage With {
.Title = "Completed",
.Description = "Installation completed successfully",
.NextVisible = False,
.CancelVisible = False,
.FinishVisible = True
}
' Add pages to wizard
wizardControl1.WizardPages = New WizardControlPage() {
welcomePage,
licensePage,
installPage,
finishPage
}
' Add wizard to form
Me.Controls.Add(wizardControl1)
Me.Text = "Setup Wizard"
Me.Size = New Size(600, 450)
End Sub
End Class
常见模式
模式 1:带验证的向导
在允许导航到下一页之前验证数据:
C#:
public partial class RegistrationWizard : Form
{
private WizardControlPage personalInfoPage;
private TextBox txtName;
private TextBox txtEmail;
private void SetupWizard()
{
personalInfoPage = new WizardControlPage
{
Title = "Personal Information",
Description = "Please enter your details"
};
// Add controls to page
txtName = new TextBox { Location = new Point(20, 20), Width = 300 };
txtEmail = new TextBox { Location = new Point(20, 60), Width = 300 };
personalInfoPage.Controls.Add(new Label
{
Text = "Name:",
Location = new Point(20, 0)
});
personalInfoPage.Controls.Add(txtName);
personalInfoPage.Controls.Add(new Label
{
Text = "Email:",
Location = new Point(20, 40)
});
personalInfoPage.Controls.Add(txtEmail);
// Subscribe to validation event
personalInfoPage.ValidatePage += PersonalInfoPage_ValidatePage;
}
private void PersonalInfoPage_ValidatePage(object sender,
System.ComponentModel.CancelEventArgs e)
{
// Validate name
if (string.IsNullOrWhiteSpace(txtName.Text))
{
MessageBox.Show("Please enter your name.", "Validation Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
e.Cancel = true;
txtName.Focus();
return;
}
// Validate email
if (string.IsNullOrWhiteSpace(txtEmail.Text) ||
!txtEmail.Text.Contains("@"))
{
MessageBox.Show("Please enter a valid email address.",
"Validation Error",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
e.Cancel = true;
txtEmail.Focus();
return;
}
}
}
模式 2:动态页面序列
根据用户选择控制页面流:
C#:
public partial class ConfigurationWizard : Form
{
private WizardControlPage typePage;
private WizardControlPage basicSettingsPage;
private WizardControlPage advancedSettingsPage;
private RadioButton rbBasic;
private RadioButton rbAdvanced;
private void SetupDynamicWizard()
{
typePage = new WizardControlPage
{
Title = "Configuration Type",
Description = "Choose your configuration level"
};
rbBasic = new RadioButton
{
Text = "Basic Configuration",
Location = new Point(20, 20),
Checked = true
};
rbAdvanced = new RadioButton
{
Text = "Advanced Configuration",
Location = new Point(20, 50)
};
typePage.Controls.Add(rbBasic);
typePage.Controls.Add(rbAdvanced);
basicSettingsPage = new WizardControlPage
{
Title = "Basic Settings",
Description = "Configure basic options"
};
advancedSettingsPage = new WizardControlPage
{
Title = "Advanced Settings",
Description = "Configure advanced options"
};
// Set dynamic page sequence
typePage.NextClick += TypePage_NextClick;
}
private void TypePage_NextClick(object sender, EventArgs e)
{
// Dynamically set next page based on selection
if (rbBasic.Checked)
{
typePage.NextPage = basicSettingsPage;
}
else
{
typePage.NextPage = advancedSettingsPage;
}
}
}
模式 3:带进度跟踪的向导
在横幅中显示当前步骤的进度:
C#:
public partial class DataImportWizard : Form
{
private Label lblProgress;
private void SetupProgressWizard()
{
// Create progress label in banner
lblProgress = new Label
{
Text = "Step 1 of 4",
Location = new Point(400, 10),
AutoSize = true,
Font = new Font("Arial", 9, FontStyle.Bold)
};
// Add to wizard's banner panel (assuming gradientPanel1 is banner)
wizardControl1.BannerPanel.Controls.Add(lblProgress);
// Subscribe to page changes
wizardControl1.BeforePageSelect += WizardControl1_BeforePageSelect;
}
private void WizardControl1_BeforePageSelect(object sender, EventArgs e)
{
// Update progress based on current page
int currentIndex = wizardControl1.WizardPages.IndexOf(
wizardControl1.SelectedWizardPage);
int totalPages = wizardControl1.WizardPages.Count;
lblProgress.Text = $"Step {currentIndex + 1} of {totalPages}";
}
}
关键属性
WizardControl 属性
| 属性 | 类型 | 描述 |
|---|---|---|
WizardPages | WizardControlPage[] | 向导页面集合 |
SelectedWizardPage | WizardControlPage | 当前显示的页面 |
BannerPanel | Panel | 包含横幅控件的面板 |
Banner | Control | 横幅图片框 |
Title | Label | 显示页面标题的标签 |
Description | Label | 显示页面描述的标签 |
BackButton | Button | 后退导航按钮 |
NextButton | Button | 下一步导航按钮 |
CancelButton | Button | 取消按钮 |
FinishButton | Button | 完成按钮 |
HelpButton | Button | 帮助按钮 |
Style | Wizard.Style | 视觉主题(Default、Metro、Office) |
BackButtonCausesValidation | bool | 后退按钮是否触发验证 |
AutoLayoutBanner | bool | 自动布局横幅控件 |
AutoLayoutTitle | bool | 自动布局标题标签 |
AutoLayoutDescription | bool | 自动布局描述标签 |
WizardControlPage 属性
| 属性 | 类型 | 描述 |
|---|---|---|
Title | string | 页面标题文本 |
Description | string | 页面描述文本 |
BackVisible | bool | 后退按钮的可见性 |
NextVisible | bool | 下一步按钮的可见性 |
CancelVisible | bool | 取消按钮的可见性 |
FinishVisible | bool | 完成按钮的可见性 |
HelpVisible | bool | 帮助按钮的可见性 |
BackEnabled | bool | 后退按钮的启用状态 |
NextEnabled | bool | 下一步按钮的启用状态 |
CancelEnabled | bool | 取消按钮的启用状态 |
FinishEnabled | bool | 完成按钮的启用状态 |
HelpEnabled | bool | 帮助按钮的启用状态 |
FullPage | bool | 隐藏横幅以显示全页内容 |
NextPage | WizardPage | 自定义下一页覆盖项 |
PreviousPage | WizardPage | 自定义上一页覆盖项 |
CancelOverFinish | bool | 将取消按钮放置在完成按钮的位置 |
LayoutName | string | 页面的唯一标识符 |
常见用例
-
安装向导 - 多步骤软件安装,包含欢迎、许可协议、选项、安装和完成页面
-
设置助手 - 用于首次运行设置或偏好设置的应用程序配置向导
-
注册表单 - 分步用户注册,包含个人信息、账户详情、偏好设置和确认
-
数据导入向导 - 引导用户完成数据导入,包括选择来源、映射、验证和执行导入
-
报表生成器 - 报表创建向导,包含参数选择、格式设置、预览和导出
-
配置管理器 - 将复杂配置界面拆分为逻辑类别,并提供导航
-
结账流程 - 电子商务结账流程,包含购物车、配送、付款和确认页面
-
新手引导体验 - 面向新用户的引导流程,包含教程步骤、功能介绍和设置完成
其他资源
- WizardControl API 文档
- 控件依赖项
- 程序集:
Syncfusion.Tools.Windows.dll - 命名空间:
Syncfusion.Windows.Forms.Tools