构建向导的良好模式是什么?

7

我通常使用 TabControl 并以某种方式隐藏选项卡并通过它们进行导航。

我很好奇还有其他方法可以做到这一点!!!


7
索伦使用了一个“RingControl”设备来控制巫师,但我认为这有点过分。 - FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: 我在哪里可以获取这样的控件? - Luiscencio
2个回答

5
您可以使用一组 Panel 对象,其中除第一个面板外,所有面板的Visible属性均设置为false
存储当前面板的索引,并具有"下一页"和"上一页"按钮,以适当地更改此索引。更改此索引时,根据需要使相应的面板可见/不可见(在给定时间内只有当前面板应可见)。
您还可以处理一些/所有面板上的IsVisibleChanged事件,以触发某些行为,以在用户导航到特定面板时发生。

2
这是一个相当复杂的主题;大约两年前,我为内部使用构建了一个相当全面的向导控件,我记得花了几周时间才能完全正确地工作。
基本元素包括:
- 头部面板 - 内容面板 - 操作面板 - 侧边栏
内容面板和操作面板都使用 ParentControlDesigner 来启用控件拖放。内容面板不允许您直接在其上拖放,而是允许您在活动页面(子面板)上拖放。操作面板还有一个“默认”模式,它创建标准的 4 个按钮(上一步、下一步、取消、完成)。我主要实现了自定义模式,这样我就可以对其进行皮肤化,即使用 DevEx 按钮而不是标准 Winforms 按钮。
标题基本上是静态的,它是一个 PictureBox 和 Label,其中图像、文本和字体可定制。(默认情况下,文本与页面标题相同,并且字体是控件的字体,加粗风格添加)。
然后,API 公开了一组数据结构:
- 步骤(具有名称、标题等,还指定它们是否应链接到侧边栏) - 工作流程(即根据您的选择下一步要去哪里) - 验证事件(同步和异步) - 操作(在页面更改、按钮单击等之前/之后运行) - 过渡效果(我为乐趣而做的,用户喜欢它们)
我为步骤编写了一个自定义集合编辑器,这将为内容面板创建子面板,如上所述。每个面板都只是直接添加到控件集合中,但根据活动步骤属性,一次只能看到一个面板。我记得停靠似乎从来没有完全正确地工作过,所以我不得不覆盖所有调整大小方法。我从未想过创建智能标记以轻松翻转页面,但可以在属性网格上选择活动页面(或页面索引)。
然后,我还必须包括大量钩子,以插入任何自定义逻辑在各个页面上。很难在此处详细介绍,而不发布所有代码。
正确设计和测试需要相当多的时间,但我不记得使用任何花哨的设计技巧,只需从单个 UI 元素(运行时和设计时)和数据结构以及它们之间的交互的角度系统地解决问题即可。
记住,所有这些都是为了创建可重用的向导组件而进行的,因为我们需要为特定应用程序开发约10个这样的组件(它也对其他项目很有用)。如果我只需要快速地拼凑一个向导,我可能不会费那么多劲,而是像你现在做的那样使用选项卡控件和几个流式面板。或者更好的是,我会使用现在许多Winforms库中提供的现成向导控件,例如DX库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接