7

我通常使用 a TabControl并以某种方式隐藏选项卡并浏览它们。

我很好奇这样做的其他方法!!!

4

2 回答 2

5

您可以使用Panel对象集合,除了第一个面板之外的所有对象都将其Visible属性设置为false.

存储当前面板的索引,并具有适当更改此索引的“下一个”和“上一个”按钮。更改此索引时,根据需要使相应的面板可见/不可见(在给定时间只有当前面板应该可见)。

您还可以处理IsVisibleChanged部分/所有面板上的事件,以在用户导航到特定面板时触发某些行为。

于 2010-03-19T21:09:30.487 回答
2

这是一个相当复杂的话题;大约两年前,我构建了一个相当全面的向导控件,用于内部使用,我记得它需要几个星期才能完全正确地工作。

基本要素是:

  • 标题面板
  • 内容面板
  • 操作面板
  • 侧边栏

内容面板和操作面板都使用ParentControlDesigner来启用拖放控件。内容面板不允许您直接放在上面,而是让您放在活动页面(子面板)上。操作面板还有一个“默认”模式,它创建标准的 4 个按钮(上一个、下一个、取消、完成)。我主要实现了自定义模式,所以我可以给它皮肤,即使用 DevEx 按钮而不是标准的 Winforms 按钮。

标题基本上是静态的,它是一个可自定义的图像、文本和字体PictureBoxLabel(默认情况下,文本与页面标题相同,字体是添加了粗体样式的控件字体)。

然后是 API 暴露的一组数据结构:

  • 步骤(带有名称、标题等,还指定它们是否应该在侧边栏中链接)
  • 工作流程(即根据您的选择将您带到下一个位置)
  • 验证事件(同步和异步)
  • 操作(在页面更改、按钮点击等之前/之后运行)
  • 过渡效果(我做这些是为了好玩,用户喜欢他们)

我为这些步骤组合了一个自定义集合编辑器,它反过来为内容面板创建子面板,如上所述。每个面板都直接添加到控件集合中,但根据活动步骤属性一次只能看到一个。我记得停靠似乎从来没有完全正确,所以我不得不覆盖所有调整大小的方法。我从来没有想过创建一个智能标签来轻松地在页面之间翻转,但是可以在属性网格上选择活动页面(或页面索引)。

然后我还必须包含一大堆钩子,用于在各个页面上插入任何自定义逻辑。如果不发布所有代码,很难在这里真正了解更多细节。

正确设计和测试非常耗时,但我不记得使用过任何 whizbang 设计技巧,只是必须从单个 UI 元素(运行时和设计时)的角度有条不紊地解决问题,如前所述和数据结构以及它们如何交互。

请记住,所有这些都是为了创建一个可重用的向导组件,因为我们需要为一个特定的应用程序开发大约 10 个向导组件(它也可以在其他项目中派上用场)。如果我只需要组合一个快速向导,我可能不会经历所有这些麻烦,我会做你正在做的事情 - 使用选项卡控件和一些流程面板。或者更好的是,我会使用现在许多 Winforms 库中可用的现成向导控件,例如 DX 库。

于 2010-03-19T21:19:22.390 回答