回答
您可以使用一组Panel
对象,除第一个面板之外的所有对象的Visible
属性设置为false
。
存储当前面板的索引,并具有适当更改该索引的“下一步”和“上一步”按钮。当此索引更改时,根据需要使适当的面板可见/不可见(只有当前面板应该在给定时间可见)。
您还可以在某些/所有面板上处理IsVisibleChanged
事件,以触发用户导航到特定面板时发生的某些行为。
这是一个很相关的话题;我在两年前建立了一个相当全面的Wizard控件,用于在家中使用,我记得花了几个星期才完成正确的工作。
的基本要素是:
- 部首面板
- 内容面板
- Action面板
- 边栏
两个内容面板和动作面板利用ParentControlDesigner
的至启用删除控件。内容面板不会让你直接放在它上面,而是让你放在活动页面(子面板)上。操作面板还有一个“默认”模式,它在其中创建标准4个按钮(prev,next,cancel,finish)。我主要实现了自定义模式,因此我可以使用它,即使用DevEx按钮而不是标准的Winforms按钮。
标题基本上是静态的,它是一个PictureBox
和Label
,图像,文本和字体可自定义。 (默认情况下,文本与页面标题相同,字体是添加了粗体风格的控件字体)。
再就是由API暴露一组数据结构的:
- 步骤(与名称,标题等,还指定是否应该在侧边栏被链接)
- 工作流程(即你在哪里下一个根据你的选择)
- 验证事件(同步和异步)
- 操作(被前运行/换页,点击按钮等)
- 过渡短跑运动员后拍摄我做了这些为了好玩,用户喜欢他们
我把这些步骤的自定义集合编辑器放在一起,反过来创建如上所述的内容面板的子面板。每个面板只是直接添加到控件集合中,但根据活动的步骤属性,一次只能看到一个面板。我记得对接似乎没有正常工作,所以我不得不重写所有的resize方法。我从来没有想过创建一个智能标签来轻松地在页面之间翻转,但是可以在属性网格上选择活动页面(或页面索引)。
然后,我还必须包括一大堆钩子来在单个页面上插入任何自定义逻辑。很难在没有发布所有代码的情况下真正了解更多细节。
正确设计和测试是非常耗时的,但我不记得使用任何whizbang设计技巧,只能从各个UI元素的角度(如运行时和运行时设计时间)和数据结构以及它们如何相互作用。
请记住所有这些都是为了创建一个可重用的向导组件,因为我们需要为特定的应用程序开发其中约10个(并且它对于其他项目也派上用场)。如果我只需要一个快速的向导,就可能不会解决所有这些问题,我只会做你正在做的事情 - 使用一个选项卡控件和几个流程面板。或者更好的是,我现在可以使用许多Winforms库中的现成向导控件,如DX库。
- 1. Fiddler是Internet过滤器的良好构建模块吗?
- 2. 什么是WPF中良好体系结构的快速模式?
- 3. 这种情况下的良好构建模式是什么? (分区工具)
- 4. .Net设计模式的良好来源
- 5. 良好的云许可证模式?
- 6. 如何创建格式良好的PDF?
- 7. 良好的登录结构
- 8. 良好的导轨插件
- 9. 建议使用javaScript验证电子邮件的良好模式?
- 10. 伪向后构建器模式?
- 11. 是否有良好的设计/架构模式用于构建移动服务器同步功能?
- 12. 导轨 - 构建嵌套模式
- 13. 如何将这个结构不良的HTML变成格式良好的XHTML?
- 14. 良好的编码习惯/模块化的HTML构造
- 15. 良好的面向对象设计
- 16. 引导模式不好positionned
- 17. CombinationReader和react-redux中的良好结构
- 18. 良好的结构文档tcp_info
- 19. C++的良好重构支持
- 20. 良好的移动和桌面架构
- 21. 良好webcrawler'礼仪'的指导
- 22. 有关VIM脚本的良好指导?
- 23. 什么是Angular2项目的良好构建系统?
- 24. 用于构建TCP服务器的良好Python网络库?
- 25. 具有良好Java支持的通用构建工具?
- 26. 构建Web服务的良好功能语言是什么?
- 27. 如何在Yii2中创建一个良好的数组结构?
- 28. 如何看起来良好的结构创建多维数组
- 29. drupal_render:如何制作格式良好的div结构?
- 30. 在Hibernate应用程序中创建模式时的良好做法
索伦使用了一个'RingControl'设备作为向导,但我认为它有点多。 – FrustratedWithFormsDesigner 2010-03-19 21:04:52
@FrustratedWithFormsDesigner:我在哪里可以得到这样的控制? – Luiscencio 2010-03-19 23:00:59