2017-06-25 113 views
-6

你好,我需要som的幫助,以縮短這一切所有答案表示讚賞! 我已經TRID找到一些方法,但沒有成功,我還挺noobish這麼簡單的東西,但也許不是簡單我可以縮短這個嗎?

 if (comboBox11.Text == "") 
     { 
      comboBox1.Enabled = true; 
      comboBox2.Enabled = true; 
      comboBox3.Enabled = true; 
      comboBox4.Enabled = true; 
      comboBox5.Enabled = true; 
      comboBox6.Enabled = true; 
      comboBox7.Enabled = true; 
      comboBox8.Enabled = true; 
      comboBox9.Enabled = true; 
      comboBox10.Enabled = true; 
      comboBox11.Enabled = true; 
      comboBox12.Enabled = true; 
     } 
     else 
     { 
      comboBox1.Enabled = false; 
      comboBox2.Enabled = false; 
      comboBox3.Enabled = true; 
      comboBox4.Enabled = false; 
      comboBox5.Enabled = false; 
      comboBox6.Enabled = false; 
      comboBox7.Enabled = false; 
      comboBox8.Enabled = false; 
      comboBox9.Enabled = false; 
      comboBox10.Enabled = false; 
      comboBox11.Enabled = true; 
      comboBox12.Enabled = false; 
     } 
+3

提示:而不是有12個不同的變量,你可以創建一個數組或列表? –

+0

如果您使用的是WinForms,並且這些控件都是在窗體控件容器中託管的,則可以使用循環設置啓用的屬性。 – Steve

+0

如果您不能使用數組或列表,如Jon Skeet提到的那樣,則可以使用反射。 –

回答

3

在WinForms應用程序,這些控件都承載控制容器內。通常這是形式本身,你可以遍歷該控件容器來獲得每一個組合這樣

bool enable = (comboBox11.Text == ""); 
foreach(ComboBox cb in this.Controls.OfType(ComboBox)()) 
    cb.Enabled = enable; 
// These are always enabled. 
comboBox11.Enabled = true; 
comboBox3.Enabled = true;