C# 在Winforms中控制用户工作流

C# 在Winforms中控制用户工作流,c#,.net,winforms,tabs,C#,.net,Winforms,Tabs,我正在用C#构建一个Winforms应用程序,并添加了一个包含三个选项卡的选项卡控件 我想限制用户在填写第一个选项卡之前访问第二个选项卡页面的能力 我在第一个选项卡上有一个提交按钮,我希望当用户单击submit按钮时可以访问第二个选项卡 我怎样才能做到这一点 您可以禁用选项卡,直到用户完成第一页:每次用户更改选项卡1上的值时,验证选项卡的值,并根据需要启用/禁用选项卡2 但是,听起来您的流程不适合选项卡,也许更适合采用类似“向导”的方法,即在进入下一步之前必须完成每个步骤?更多的信息确实有用 编

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

我想限制用户在填写第一个选项卡之前访问第二个选项卡页面的能力

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

我怎样才能做到这一点


您可以禁用选项卡,直到用户完成第一页:每次用户更改选项卡1上的值时,验证选项卡的值,并根据需要启用/禁用选项卡2

但是,听起来您的流程不适合选项卡,也许更适合采用类似“向导”的方法,即在进入下一步之前必须完成每个步骤?更多的信息确实有用


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

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

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


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

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

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);
  }
}
可以使用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);
  }
}

你应该在你的问题上多加一些细节。首先,您是否使用Windows窗体?请标记您的问题以指示Windows/Web窗体。如果没有这些信息,这个问题几乎毫无用处,因为答案会因信息的不同而大相径庭。+1同意这听起来不是正确的表达方式。如果你想设置一个选项,但你不被允许,你也说不出原因,这可能会非常令人沮丧。在设计模式下,如果你想让表单填充表单,那么设计表单是非常困难的。我建议删除if语句中的设计模式,并通过视图>其他窗口>文档大纲启用文档大纲。然后,您也可以轻松地切换选项卡页面。