2013-02-15 3 views
-3

Я работаю над окнами. У меня очень странная проблема.Выполняются и те и другие условия

В одном из обработчиков событий кнопки я применил условие if и else.

Проблема заключается в том, что выполнены условия и условия.

Может ли кто-нибудь указать, где я ошибаюсь?

private void button1_Click(object sender, EventArgs e) 
     { 
      if (radioButton1.Checked == true && checkEbayName(textBox1.Text) == true) 
      { 
       DataSet ds = GetUserByEbayName(textBox1.Text); 
       if (ds == null) 
        { 
         return; 
        } 
       dataGridView1.DataSource = ds.Tables["Customer"]; 

      } 

      if (radioButton2.Checked == true && checkName(textBox1.Text) == true) 
      { 
       DataSet ds = GetUserByName(textBox1.Text); 
       //if (checkCustomer(textBox1.Text, textBox2.Text) == true) 
       //{ 
       if (ds == null) 
       { 
        return; 
       } 
       dataGridView1.DataSource = ds.Tables["Customer"]; 
      } 

      else 
      { 
       MessageBox.Show("No Customer with matching details"); 
      } 

     } 
+0

Из того, что я могу видеть, ваш если/другое правильно закодированы (не проблема с скобкой или аналогичная). Тогда только решение будет состоять в том, что ваша функция называется 2x, где radioButton находится в другом состоянии. –

+1

Ваши два утверждения if не являются взаимоисключающими. Вы имели в виду использовать «else if» вместо второго оператора if? – Matt

+0

Я думаю, что вы хотели сделать 'if (Radio1), elseif (Radio2), else', но вы написали' if (Radio1), если (Radio2), else', что означает, что else будет выполнен, если 'Radio2 == false', но 'Radio1' все еще может быть правдой; следовательно, 'if (Radio1)' и 'else' будут исполняться. – Nolonar

ответ

6

Ваш еще будет уволен, если первый if не выполняется. Я подозреваю, что вы хотите использовать else if для вашего второго if.

Как ваш код стоит первый if может оцениваться как истинный. Затем логика попадает во второй if. Если это условие не выполняется, будет выполнено else.

+0

Но когда я запускаю приложение, если выполняется, а затем еще –

+0

@AmritSharma Вы говорите, что ваш второй 'if' был выполнен, а также' else'. Вы пытались отладить? –

+0

спасибо Даниэлю, иначе, если проблема решена –

0

Возможно, вам сначала не хватает утверждения возврата, если?

if (radioButton1.Checked == true && checkEbayName(textBox1.Text) == true) 
{ 
    DataSet ds = GetUserByEbayName(textBox1.Text); 
    if (ds == null) 
    { 
     return; 
    } 

    dataGridView1.DataSource = ds.Tables["Customer"]; 
    return; 
} 
0

Если radiobutton1 проверяется вы выполнить первое условие, и если ds is not null ваш код не возвращается, но проверяет для второй, если. Это, если две радиообъекты являются взаимоисключающими, не может быть истинным, а else выполняется.

Если вы хотите, чтобы показать окно сообщения, если нет клиента для вас сетки, можно переписать код, чтобы проверить нулевой йз в конце

DataSet ds = null; 
if (radioButton1.Checked == true && checkEbayName(textBox1.Text) == true) 
{ 
    ds = GetUserByEbayName(textBox1.Text); 
    if (ds != null) 
     dataGridView1.DataSource = ds.Tables["Customer"]; 
} 
else if (radioButton2.Checked == true && checkName(textBox1.Text) == true) 
{ 
    ds = GetUserByName(textBox1.Text); 
    if (ds != null) 
     dataGridView1.DataSource = ds.Tables["Customer"]; 
} 

// Show the user that we have not found customers not by ebayname or username 
if(ds == null) 
    MessageBox.Show("No Customer with matching details"); 
+0

Возможно ли, что 2 radioButton будет равен true в одном контроле? – spajce

+0

В двух разных групповых группах – Steve

+0

да. но theres no GroupBox в вопросе.': D' – spajce

0

еще никогда не будет выполняться, если условие для соответствия if выполнено. Однако вам нужно отделить if, а второе не зависит от первого. Упрощенная версия кода будет

if(a){ 
    if(d) { 
     return; 
    } 
} 

if(b){} 
else{ 
} 

В том случае, когда либо или d ложно, выполнение будет добраться до второй, если. Если b также является ложным, то else будет выполняться.

Если предназначено еще будет выполняться только в том случае, когда одновременно и б ложны, то вы должны сделать следующее

if (radioButton1.Checked == true && checkEbayName(textBox1.Text) == true) { 
//... 

} else if (radioButton2.Checked == true && checkName(textBox1.Text) == true) { 
    //... 
} else { 
      MessageBox.Show("No Customer with matching details"); 
} 
Смежные вопросы