2016-04-18 28 views
2

Ich überprüfe gerade, ob Comboboxen und numerischeUpdowns leer sind, aber ich mache es mit If-Anweisung.Überprüfen, ob etwas leer ist

Können Sie mir sagen, ob es einen anderen schnelleren Weg gibt? Hier

ist aktuellen Code

private void button1_Click(object sender, EventArgs e) 
    { 
     if(comboBox1.SelectedItem != null) 
     { 
      if(comboBox2.SelectedItem != null) 
      { 
       if(numericUpDown1.Value != 0) 
       { 
        if(numericUpDown2.Value != 0) 
        { 
         if(numericUpDown3.Value != 0) 
         { 
          if(numericUpDown4.Value != 0) 
          { 
           string domacin = "" + comboBox1.GetItemText(comboBox1.SelectedItem); 
           int D_kosevaPrvoPoluvreme = (int)numericUpDown1.Value; 
           int D_kosevaDrugoPoluvreme = (int)numericUpDown3.Value; 
           int D_ukupnoKoseva = D_kosevaDrugoPoluvreme + D_kosevaPrvoPoluvreme; 
           int D_primljenihKosevaPrvoPoluvreme = (int)numericUpDown2.Value; 
           int D_primljenihKosevaDrugoPoluvreme = (int)numericUpDown4.Value; 
           int D_ukupnoPrimljenihKoseva = D_primljenihKosevaDrugoPoluvreme + D_primljenihKosevaPrvoPoluvreme; 

           string gost = "" + comboBox2.GetItemText(comboBox2.SelectedItem); 
           int G_kosevaPrvoPoluvreme = (int)numericUpDown2.Value; 
           int G_kosevaDrugoPoluvreme = (int)numericUpDown4.Value; 
           int G_ukupnoKoseva = G_kosevaDrugoPoluvreme + G_kosevaPrvoPoluvreme; 
           int G_primljenihKosevaPrvoPoluvreme = (int)numericUpDown1.Value; 
           int G_primljenihKosevaDrugoPoluvreme = (int)numericUpDown3.Value; 
           int G_ukupnoPrimljenihKoseva = G_primljenihKosevaDrugoPoluvreme + G_primljenihKosevaPrvoPoluvreme; 

           int rezultat; 
           Functions.odrediPobednika(out rezultat, D_ukupnoKoseva, G_ukupnoKoseva); 

           //SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\arist\Documents\VisualStudio2015\Projects\NBA\NBA\NBA.mdf;Integrated Security=True"); 
           //SqlCommand cmd = new SqlCommand("", con); 
          } 
         } 
        } 
       } 
      } 
     }    
    } 
+0

Schneller zu typ: ja. Schneller auszuführen: nein. – HimBromBeere

+0

Sie können nur eine If-Anweisung verwenden – Amine

+6

'if (a) {if (b) {if (c) {...}}} ->' if (a && b && c) {...} ' . –

Antwort

3

ich mit aussagekräftigen Meldungen folgenden fehler schnell Validierungsansatz verwenden würde:

private void button1_Click(object sender, EventArgs e) 
{ 

    if (comboBox1.SelectedItem == null) 
    { 
     MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz"); 
     return; 
    } 
    else if (comboBox2.SelectedItem == null) 
    { 
     MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz"); 
     return; 
    } 
    else if (numericUpDown1.Value == 0) 
    { 
     MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz"); 
     return; 
    } 
    else if (numericUpDown2.Value == 0) 
    { 
     MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz"); 
     return; 
    } 
    else if (numericUpDown3.Value == 0) 
    { 
     MessageBox.Show("Meaningful message, user should know what he has done wrong", "Invalid xyz"); 
     return; 
    } 

    // insert code 
} 

Es ist weder kürzer noch effizienter zu gestalten, aber Es ist leicht zu lesen, zu debuggen und am wichtigsten: Der Benutzer weiß, was schief gelaufen ist. Sie sollten auch aussagekräftige Kontrollnamen verwenden.

Natürlich könnten Sie auch einen if verwenden und alle Bedingungen mit && erfassen, aber ich würde meinen ersten Ansatz aus den oben genannten Gründen bevorzugen.

bool valid = comboBox1.SelectedItem != null 
      && comboBox2.SelectedItem != null 
      && numericUpDown1.Value != 0 
      && numericUpDown2.Value != 0 
      && numericUpDown3.Value != 0 
      && numericUpDown4.Value != 0; 
if(valid){ 
    //Code 
} 
+0

Tippfehler: Sie suchen nach 'numericUpDown1's Wert == 0' 3 mal –

+0

@EmperorAiman: Kopieren & Einfügen, bereits behoben –

+0

Deshalb habe ich Tippfehler gesagt :) –

1

Das erste, was in den Sinn kommt ist ein verwenden, wenn Anweisung

if(comboBox1.SelectedItem != null && comboBox2.SelectedItem != null && numericUpDown1.Value != 0 && numericUpDown2.Value != 0 && numericUpDown3.Value != 0 && numericUpDown4.Value != 0) 
{ 
    //Code 
} 

Dies kann auch auf mehrere Linien zur besseren Lesbarkeit gelegt werden

if(comboBox1.SelectedItem != null && 
comboBox2.SelectedItem != null && 
numericUpDown1.Value != 0 && 
numericUpDown2.Value != 0 && 
numericUpDown3.Value != 0 && 
numericUpDown4.Value != 0) 
{ 
    //Code 
} 
0

Dort gibt es nicht viel zu optimieren in Bezug auf Ausführungszeiten usw. Aber der Code co ULD ein wenig übersichtlicher gemacht werden, könnte ein Anfang etwas wie sein:

private void button1_Click(object sender, EventArgs e) 
    { 
     if(comboBox1.SelectedItem != null && 
      comboBox2.SelectedItem != null && 
      numericUpDown1.Value != 0 && 
      numericUpDown2.Value != 0 && 
      numericUpDown3.Value != 0 && 
      numericUpDown4.Value != 0) 
      { 
       string domacin = comboBox1.GetItemText(comboBox1.SelectedItem); 
           int D_kosevaPrvoPoluvreme = (int)numericUpDown1.Value; 
           int D_kosevaDrugoPoluvreme = (int)numericUpDown3.Value; 
           int D_ukupnoKoseva = D_kosevaDrugoPoluvreme + D_kosevaPrvoPoluvreme; 
           int D_primljenihKosevaPrvoPoluvreme = (int)numericUpDown2.Value; 
           int D_primljenihKosevaDrugoPoluvreme = (int)numericUpDown4.Value; 
           int D_ukupnoPrimljenihKoseva = D_primljenihKosevaDrugoPoluvreme + D_primljenihKosevaPrvoPoluvreme; 

           string gost = comboBox2.GetItemText(comboBox2.SelectedItem); 
           int G_kosevaPrvoPoluvreme = (int)numericUpDown2.Value; 
           int G_kosevaDrugoPoluvreme = (int)numericUpDown4.Value; 
           int G_ukupnoKoseva = G_kosevaDrugoPoluvreme + G_kosevaPrvoPoluvreme; 
           int G_primljenihKosevaPrvoPoluvreme = (int)numericUpDown1.Value; 
           int G_primljenihKosevaDrugoPoluvreme = (int)numericUpDown3.Value; 
           int G_ukupnoPrimljenihKoseva = G_primljenihKosevaDrugoPoluvreme + G_primljenihKosevaPrvoPoluvreme; 

           int rezultat; 
           Functions.odrediPobednika(out rezultat, D_ukupnoKoseva, G_ukupnoKoseva); 

           //SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\arist\Documents\VisualStudio2015\Projects\NBA\NBA\NBA.mdf;Integrated Security=True"); 
           //SqlCommand cmd = new SqlCommand("", con); 
    } 
}