我可以使用循环启用多个按钮吗?

时间:2014-05-23 22:46:02

标签: c# winforms

        btnA.Enabled = true;
        btnB.Enabled = true;
        btnC.Enabled = true;
        btnD.Enabled = true;
        btnE.Enabled = true;
        btnF.Enabled = true;
        btnG.Enabled = true;
        btnH.Enabled = true;
        btnI.Enabled = true;
        btnJ.Enabled = true;
        btnK.Enabled = true;
        btnL.Enabled = true;
        btnM.Enabled = true;
        btnN.Enabled = true;
        btnO.Enabled = true;
        btnP.Enabled = true;
        btnQ.Enabled = true;
        btnR.Enabled = true;
        btnS.Enabled = true;
        btnT.Enabled = true;
        btnU.Enabled = true;
        btnV.Enabled = true;
        btnW.Enabled = true;
        btnX.Enabled = true;
        btnY.Enabled = true;
        btnZ.Enabled = true;

我正在做一个刽子手游戏,我必须在用户点击开始/重启时启用所有这些按钮。无论如何我可以通过循环来删除这个冗余代码吗?

是W F A

5 个答案:

答案 0 :(得分:2)

创建一个列表/数组/按钮集合,并在for循环中执行。

答案 1 :(得分:2)

foreach(var b in this.Controls.OfType<Button>())
{ 
   b.Enabled = true;
}

添加一些LINQ。添加where子句以排除您不想要定位的按钮。

答案 2 :(得分:0)

执行类似

的操作
foreach(Control ctrl in this.Controls)
{
    if(ctrl is IButtonControl)
    {
        ctrl.Enabled = true;
    }
}

答案 3 :(得分:0)

带有类型检查的简单循环;)

foreach(Button btn in this.Controls.OfType<Button>())
{
    // Invert the current state.
    btn.Enabled = !btn.Enabled;
}

这就是全部;)

答案 4 :(得分:-1)

您没有指定,但如果这是针对Web应用程序我建议您使用javascript / html执行此操作。例如,如果您在应用程序中使用jQuery,则下面的代码应该执行此操作:

$("button").prop("disabled",true);

这将避免对服务器进行不必要的回发,并且看起来比您在后面的代码中能够实现的任何解决方案都简单。