2016-12-21 5 views
0

私は、コンボボックスにデータがあることに基づいてストアドプロシージャを実行するボタンが1つあります。 if複数のステートメントは、それぞれのコンボボックスのシナリオを説明するのに最適なコースですか?私は現在、私のコードをそういうものにしています - うまくいくが、少し遅いです。 C#とVS2013を使ってこの構文を書く方が良いでしょうか?1ボタン4 Comboboxes On Winフォーム

private void btn1_Click() 
{ 
    if (cbo1.Text.ToString() == "" && cbo2.Text.ToString() == "" && cbo3.Text.ToString() == "" && cbo4.Text.ToString() == "") 
    { 
     MessageBox.Show("You failed to make a selection."); 
     return; 
    } 
    if (cbo1.Text.ToString() != "" && cbo2.Text.ToString() == "" && cbo3.Text.ToString() == "" && cbo4.Text.ToString() == "") 
    { 
     //Go route1 
    } 
    if (cbo1.Text.ToString() == "" && cbo2.Text.ToString() 1= "" && cbo3.Text.ToString() == "" && cbo4.Text.ToString() == "") 
    { 
     //Go route2 
    } 
    if (cbo1.Text.ToString() == "" && cbo2.Text.ToString() == "" && cbo3.Text.ToString() != "" && cbo4.Text.ToString() == "") 
    { 
     //Go route3 
    } 
    if (cbo1.Text.ToString() == "" && cbo2.Text.ToString() == "" && cbo3.Text.ToString() == "" && cbo4.Text.ToString() != "") 
    { 
     //Go route4 
    } 
} 

EDIT
@MethodMan - >あなたがチェックのセットアップについては行くだろうかこれは?

var comboBoxes = this.Controls 
       .OfType<ComboBox>() 
       .Where(x => x.Name.StartsWith("comboBox")); 

foreach(var cmbBox in comboBoxes) 
{ 
    (string.IsNullOrEmpty(cmbBox.Text)) || if (cmbBox.SelectedIndex == -1) 
    { 
    //How to find which combobox is cmbBox 
    } 
} 
+0

なぜこのコードが遅いのですか? – LarsTech

+0

@LarsTech - 私がそれを実行すると、それは鈍いです。そのため、構文を書く方がいいかどうか尋ねる理由です。 –

+0

これを行うと、読みやすくするためのいくつかの方法があります.Controlsクラスを使用してコンボボックスであるかどうかを確認し、string.IsNullOrEmpty関数を使用して.Textプロパティが空でない場合。 – MethodMan

答えて

2

私の提案は、このようなものになります。それはあなたがしたい仕事をする

private void btn1_Click() 
{ 
int data = 0; 
if(cbo1.Text.ToString() != "") 
    data+=1; 
if(cbo2.Text.ToString() != "") 
    data+=2; 
if(cbo3.Text.ToString() != "") 
    data+=4; 
if(cbo4.Text.ToString() != "") 
    data+=8; 
switch(data) 
{ 
    case 1: 
    //Go route1 
    break; 
    case 2: 
    //Go route2 
    break; 
    case 4: 
    //Go route3 
    break; 
    case 8: 
    //Go route4 
    break; 
    default: 
    MessageBox.Show("You failed to make a selection."); 
    break; 
} 
} 

i`mわからないが、それははるかに高速であり、この方法は、あなたは、ユーザーウィッヒコンボを確認することができます選択されていて、コンボではなかった

+0

ユーザーが複数のコンボボックスから値を選択できないようにするにはどうすればよいですか?私は1つの入力を許可したいだけです。しかし、ユーザーが偶然に2つの値を選択した場合は、2つのルートが発生します。 –

+1

バイナリデータを使用する方法は、ユーザーが複数のコンボボックスを選択したかどうかを調べることができます。 –

+1

2つのルートが存在しません。たとえば、彼はcbo1とcbo3を選択します。データは5になります。スイッチにはありません。デフォルトのケースになります。 –

関連する問題