2017-06-25 4 views
-6

Hallo ich brauche som Hilfe, um dies zu verkürzen alle Antworten werden geschätzt! ich habe TrID einige Möglichkeiten zu finden, aber keinen Erfolg, und ich bin irgendwie noobish so etwas einfach vielleicht, aber nicht auf einfacheKann ich das verkürzen?

 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

Hinweis zu erhalten: anstelle von 12 verschiedenen Variablen haben, könnten Sie ein Array oder eine Liste erstellen? –

+0

Wenn Sie WinForms verwenden und diese Steuerelemente alle im Containers-Container des Formulars gehostet werden, können Sie die Eigenschaft enabled mit einer Schleife festlegen – Steve

+0

Wenn Sie kein Array oder eine Liste verwenden können, wie Jon Skeet erwähnt, können Sie reflection verwenden. –

Antwort

3

In einer Anwendung WinForms diese Kontrollen alle in einem Steuercontainer gehostet werden. Normalerweise ist dies die Form selbst und Sie können eine Schleife über diese Steuerungscontainer jede Combo auf diese Weise

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; 
Verwandte Themen