C# 根据某些条件启用和禁用按钮、标签
我有5个按钮,每个按钮旁边有5个标签。当我运行该应用程序时,我希望第一个按钮被启用,其余按钮被禁用,并与标签一起变灰。单击第一个按钮后,它应使用标签禁用,并使用所有其他按钮启用第二个按钮,依此类推 这条路太长了,有没有更好的办法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
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方法。那就把那个错误打耳光。。调用每个按钮上的方法以某种方式缩短代码。在控件循环中,此链接可能会有所帮助:如果控件在逻辑上相关,则应该有一些数据结构(例如列表)来反映这一点。