【问题标题】:C# Enable/Disable multiple textbox based on combobox selectionC#根据组合框选择启用/禁用多个文本框
【发布时间】:2016-05-02 11:32:31
【问题描述】:

我只是一个正在学习如何编码的普通人。我不喜欢代码看起来很草率并且可以合并的时候。话虽如此,我需要整合一些代码,但我未能找到有关如何执行此操作的信息。

我正在尝试根据组合框选择启用/禁用多个文本框。

这是我试图整合的又长又丑的代码

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        int Combobox_Process_Selected_Index = comboBox2.SelectedIndex;
        if (Combobox_Process_Selected_Index == 0)
        {
            textBox2.Enabled = false;
            textBox3.Enabled = false;
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 1)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = false;
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 2)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = false;
            textBox5.Enabled = false;
            textBox6.Enabled = false;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 3)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = false;
            textBox6.Enabled = false;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 4)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = false;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 5)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = false;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 6)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = false;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 7)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = false;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 8)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = true;
            textBox10.Enabled = false;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 9)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = true;
            textBox10.Enabled = true;
            textBox11.Enabled = false;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 10)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = true;
            textBox10.Enabled = true;
            textBox11.Enabled = true;
            textBox12.Enabled = false;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 11)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = true;
            textBox10.Enabled = true;
            textBox11.Enabled = true;
            textBox12.Enabled = true;
            textBox13.Enabled = false;
        }
        if (Combobox_Process_Selected_Index == 12)
        {
            textBox2.Enabled = true;
            textBox3.Enabled = true;
            textBox4.Enabled = true;
            textBox5.Enabled = true;
            textBox6.Enabled = true;
            textBox7.Enabled = true;
            textBox8.Enabled = true;
            textBox9.Enabled = true;
            textBox10.Enabled = true;
            textBox11.Enabled = true;
            textBox12.Enabled = true;
            textBox13.Enabled = true;
        }

    }

【问题讨论】:

    标签: c# combobox textbox enable-if consolidation


    【解决方案1】:

    好的,我只想说非常感谢h8red。我从大量的垃圾代码变成了不到 10 行代码。

    这是通过将文本框放置在面板中然后根据组合框用户输入启用/禁用它们而得到的代码合并。

            private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
            //set a counter to track textbox number and compare with combobox selection
            int countTB = 0;
    
            //grab combobox selection and place as an integer
            int Combobox_Process_Selected_Index = comboBox2.SelectedIndex;
    
            //this looks at each child control in my panel (named panel1)
            foreach (Control child in panel1.Controls)  
            {
                //this looks at each textbox individually and enables them until combo selection is reached and disables the rest
                TextBox textBox = child as TextBox;              
                if (countTB < Combobox_Process_Selected_Index)
                {
                    textBox.Enabled = true;
                }
                else
                    textBox.Enabled = false;
                countTB++;
            }
        }
    

    【讨论】:

    • 届时将不胜感激正式接受我的回答。
    【解决方案2】:

    你需要一个容器控件类来包含所有的文本框。最简单的是Panel 类。只需将所有 texboxes 添加到panel.Controls,您就可以循环访问它们。您还必须手动设置一个选项卡才能仅启用其中一些选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多