【问题标题】:Controlling user workflow in Winforms在 Winforms 中控制用户工作流程
【发布时间】:2010-01-14 13:05:26
【问题描述】:

我正在用 C# 构建一个 Winforms 应用程序,并且我添加了一个具有三个选项卡的选项卡控件。

我想限制用户访问第二个标签页的能力,直到用户填写第一个标签页。

我在第一个选项卡上有一个提交按钮,我希望在用户单击submit 按钮时能够访问第二个选项卡。

我怎样才能做到这一点?

Image unavailable

【问题讨论】:

  • 您应该为您的问题添加更多细节。一方面,您使用的是 Windows 窗体吗?
  • 请标记您的问题以指明 Windows/Web 窗体。如果没有这些信息,这个问题几乎毫无用处,因为答案会因答案而异。

标签: c# .net winforms tabs


【解决方案1】:

阻止用户选择选项卡会导致用户界面非常不直观。考虑创建一个“向导”,这是一个 UI 小工具,可通过“下一步”按钮将用户从一个页面带到下一个页面。和一个后退按钮,可选。您可以通过设置 Next 按钮的 Enabled 属性来明确一个步骤已完成。

可以使用 TabControl 创建这样的向导。向您的项目添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到表单上。在设计时,它看起来像一个普通的 TC,允许您添加每个向导步骤所需的控件。在运行时选项卡是隐藏的。实现 Next 和 Back 按钮很简单,只需更改 SelectedIndex 属性即可。

using System;
using System.Windows.Forms;

class WizardPages : TabControl {
  protected override void WndProc(ref Message m) {
    // Hide tabs by trapping the TCM_ADJUSTRECT message
    if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
    else base.WndProc(ref m);
  }
}

【讨论】:

  • 在设计模式下,如果要让它填满表格,设计表格是非常困难的。我建议删除 if 语句中的 DesignMode 并通过 View>Other Windows>Document Outline 启用 Document Outline。然后您也可以轻松切换标签页。
【解决方案2】:

您可以在用户完成第一页之前禁用标签:每次您的用户更改标签一上的值时,验证标签的值并根据需要启用/禁用标签二。

但是,听起来您的流程不适合制表符,也许更适合使用类似“向导”的方法,即必须先完成每个步骤,然后再进行下一步?更多信息确实很有用。

编辑:如果您愿意,可以使用 Tab 控件的 Selecting 事件来取消选项卡更改。

【讨论】:

  • +1 同意这听起来不像是呈现它的正确方式。当你想设置一个选项但你不被允许并且你不知道为什么时,这可能会非常令人沮丧。
【解决方案3】:

最简单的方法是使受限制的选项卡不可见或不启用。

【讨论】:

    【解决方案4】:

    已经说过多次了,但是您可以禁用或不显示选项卡 2 和 3,直到用户单击选项卡 1 中的提交按钮,验证文件,然后启用选项卡 2。如果您在 tab2 中有提交按钮,则可以对 tab3 执行相同操作。

    再次需要重申的是,从可用性的角度来看,这不是选项卡的最佳用法。如果您告诉我们应用程序在做什么,那么我们可能会为您提供更好的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多