C# 禁用上一步中的控件

C# 禁用上一步中的控件,c#,asp.net,wizard,C#,Asp.net,Wizard,如何在下一个按钮单击事件后禁用向导上一步中的所有checbkox或所有单选按钮?ASPX: <asp:Wizard ID="Wizard1" runat="server" onnextbuttonclick="Wizard1_NextButtonClick"> <WizardSteps> <asp:WizardStep ID="Step1" runat="server" Title="Step 1">

如何在下一个按钮单击事件后禁用向导上一步中的所有checbkox或所有单选按钮?

ASPX:

<asp:Wizard ID="Wizard1" runat="server" 
        onnextbuttonclick="Wizard1_NextButtonClick">
        <WizardSteps>
            <asp:WizardStep ID="Step1" runat="server" Title="Step 1">
                <asp:RadioButton ID="RadioButton1" Text="Option 1" runat="server" />
                <asp:RadioButton ID="RadioButton2" Text="Option 2" runat="server" />
                <asp:RadioButton ID="RadioButton3" Text="Option 3" runat="server" />
            </asp:WizardStep>
            <asp:WizardStep ID="Step2" runat="server" Title="Step 2">
            </asp:WizardStep>
        </WizardSteps>
    </asp:Wizard>
protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (Wizard1.ActiveStep == Step1)
    {
        IEnumerable<RadioButton> controls = FindControls<RadioButton>(Step1);
        controls.ToList().ForEach(c => c.Enabled = false);
    }
}

IEnumerable<T> FindControls<T>(Control parent) where T : Control
{
    foreach (Control c in parent.Controls)
    {
        if (c.GetType() == typeof(T)) yield return (T)c;
        foreach (var subControl in FindControls<T>(c))
            yield return subControl;
    }
}

代码隐藏:

<asp:Wizard ID="Wizard1" runat="server" 
        onnextbuttonclick="Wizard1_NextButtonClick">
        <WizardSteps>
            <asp:WizardStep ID="Step1" runat="server" Title="Step 1">
                <asp:RadioButton ID="RadioButton1" Text="Option 1" runat="server" />
                <asp:RadioButton ID="RadioButton2" Text="Option 2" runat="server" />
                <asp:RadioButton ID="RadioButton3" Text="Option 3" runat="server" />
            </asp:WizardStep>
            <asp:WizardStep ID="Step2" runat="server" Title="Step 2">
            </asp:WizardStep>
        </WizardSteps>
    </asp:Wizard>
protected void Wizard1_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    if (Wizard1.ActiveStep == Step1)
    {
        IEnumerable<RadioButton> controls = FindControls<RadioButton>(Step1);
        controls.ToList().ForEach(c => c.Enabled = false);
    }
}

IEnumerable<T> FindControls<T>(Control parent) where T : Control
{
    foreach (Control c in parent.Controls)
    {
        if (c.GetType() == typeof(T)) yield return (T)c;
        foreach (var subControl in FindControls<T>(c))
            yield return subControl;
    }
}
protectedvoid向导1\u NextButtonClick(对象发送方,向导导航目标)
{
如果(Wizard1.ActiveStep==Step1)
{
IEnumerable控件=FindControl(步骤1);
controls.ToList().ForEach(c=>c.Enabled=false);
}
}
IEnumerable FindControl(控件父级),其中T:Control
{
foreach(父控件中的控件c)
{
如果(c.GetType()==typeof(T))产生返回(T)c;
foreach(FindControl中的var子控制(c))
收益回报子控制;
}
}

好的,我已经检查过了,但它不起作用,当
step.allowerturn=false

你试过什么了吗?请阅读并回答您的问题,如果您的操作成功,请在向导中单击“下一步”禁用所有控件哇,真棒的答案。我知道我必须在OnNextButtonClick事件中这样做。但我想问的是,在进入下一步后,如何找到这些控件并禁用它们。谢谢你,丹尼。这对我不起作用。我需要使用它来禁用控件,如果用户进入下一步,然后单击浏览器中的“上一页”按钮,那么应该禁用前一步中的控件。你知道怎么做吗?获取控件并禁用它们的逻辑肯定是有效的。我认为问题是你不确定在哪一点实际禁用控件。如果你想在用户单击上一个按钮时禁用它们,请为Wizzard实现
onPreviousButton单击
事件。最终我会建议通过阅读Wizzard的msdn文档来更加熟悉它-