C# 根据某些条件启用和禁用按钮、标签

C# 根据某些条件启用和禁用按钮、标签,c#,winforms,button,label,C#,Winforms,Button,Label,我有5个按钮,每个按钮旁边有5个标签。当我运行该应用程序时,我希望第一个按钮被启用,其余按钮被禁用,并与标签一起变灰。单击第一个按钮后,它应使用标签禁用,并使用所有其他按钮启用第二个按钮,依此类推 这条路太长了,有没有更好的办法 private void Form1_Load(object sender, EventArgs e) { btn1.Enabled = true; btn2.Enabled = false; btn3.Enabled

我有5个按钮,每个按钮旁边有5个标签。当我运行该应用程序时,我希望第一个按钮被启用,其余按钮被禁用,并与标签一起变灰。单击第一个按钮后,它应使用标签禁用,并使用所有其他按钮启用第二个按钮,依此类推

这条路太长了,有没有更好的办法

private void Form1_Load(object sender, EventArgs e)
{

        btn1.Enabled = true;
        btn2.Enabled = false;
        btn3.Enabled = false;
        btn4.Enabled = false;
        btn5.Enabled = false;
        lblStep1.Enabled = true;
        lblStep2.Enabled = false;
        lblStep3.Enabled = false;
        lblStep4.Enabled = false;
        lblStep5.Enabled = false;
    }

    private void btn1_Click(object sender, EventArgs e)
    {
            btn1.Enabled = false;
            btn2.Enabled = true;
            btn3.Enabled = false;
            btn4.Enabled = false;
            btn5.Enabled = false;
            lblStep1.Enabled = false;
            lblStep2.Enabled = true;
            lblStep3.Enabled = false;
            lblStep4.Enabled = false;
            lblStep5.Enabled = false;
    }

    private void btn2_Click(object sender, EventArgs e)
    {
            btn1.Enabled = false;
            btn2.Enabled = false;
            btn3.Enabled = true;
            btn4.Enabled = false;
            btn5.Enabled = false;
            lblStep1.Enabled = false;
            lblStep2.Enabled = false;
            lblStep3.Enabled = true;
            lblStep4.Enabled = false;
            lblStep5.Enabled = false;
        }
    }

    private void btn3_Click(object sender, EventArgs e)
    {
        btn1.Enabled = false;
        btn2.Enabled = false;
        btn3.Enabled = false;
        btn4.Enabled = true;
        btn5.Enabled = false;
        lblStep1.Enabled = false;
        lblStep2.Enabled = false;
        lblStep3.Enabled = false;
        lblStep4.Enabled = true;
        lblStep5.Enabled = false;
    }

    private void btn4_Click(object sender, EventArgs e)
    {
        btn1.Enabled = false;
        btn2.Enabled = false;
        btn3.Enabled = false;
        btn4.Enabled = false;
        btn5.Enabled = true;
        lblStep1.Enabled = false;
        lblStep2.Enabled = false;
        lblStep3.Enabled = false;
        lblStep4.Enabled = false;
        lblStep5.Enabled = true;
    }

    private void btn5_Click(object sender, EventArgs e)
    {
        btn1.Enabled = true;
        btn2.Enabled = false;
        btn3.Enabled = false;
        btn4.Enabled = false;
        btn5.Enabled = false;
        lblStep1.Enabled = true;
        lblStep2.Enabled = false;
        lblStep3.Enabled = false;
        lblStep4.Enabled = false;
        lblStep5.Enabled = false;
    }

让所有这些按钮和标签都在一个容器中(如果这并不意味着你可以使用这个。控件,如果表单只包含这些按钮和标签)。让它成为
pnlContainer
,现在您可以尝试以下方法:

public void ButtonController(Button buttonToEnable, Label labelToenable)
{
    foreach (Control ctrl in panel1.Controls)
    {
        if (ctrl == buttonToEnable || ctrl == labelToenable)
        {
            ctrl.Enabled = true;
        }
        else
        {
            ctrl.Enabled = false;
        }
    }
}
因此,在
Form1\u Load
中,您希望启用
btn1
lblStep1
,因此调用应为:

ButtonController(btn1,lblStep1);

对于
btn1\u单击
方法调用将类似于
ButtonController(btn2,lblStep2)。简而言之,您可以将要启用的按钮和标签传递给此方法,这将禁用容器中的其余控件。

创建
bool
方法或just方法。那就把那个错误打耳光。。调用每个按钮上的方法以某种方式缩短代码。在控件循环中,此链接可能会有所帮助:如果控件在逻辑上相关,则应该有一些数据结构(例如列表)来反映这一点。