2016-12-21 4 views
0

У меня есть 1 кнопка, которая будет выполнять хранимую процедуру, на основе которой у combobox есть данные. Являются ли множественные if заявления лучшим курсом для меня для учета каждого сценария combobox? В настоящее время у меня такой код, который работает, но немного медленный. Есть ли лучший способ написать этот синтаксис с помощью C# и VS2013?1 Кнопка 4 Comboboxes On Win Form

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 для проверки элемента управления, если это комбобокс, и если свойство .Text не пустое, используя функцию string.IsNullOrEmpty. – 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 не уверен, что он будет делать работу, которую вы хотите, но это намного быстрее и таким образом, вы можете проверить Wich комбо пользователем selected и wich комбо он не

+0

Что вы посоветуете запретить пользователю выбирать значение из нескольких списков со списком? Я только хочу разрешить ввод в одном. Однако, если пользователь случайно выбрал значение из двух, произойдет два маршрута. –

+1

способ, которым я использовал двоичные данные, вы можете узнать, выбрал ли пользователь мульчированные комбобокс или нет. –

+1

там не будет двух маршрутов: например, он выбирает cbo1 и cbo3, данные будут 5 ведьм не в переключателе и перейдут в случай по умолчанию –