2016-08-16 7 views
1

사용자가 텍스트 상자를 비워 둘 때 메시지를 표시하는 조건을 추가하는 데 정말로 문제가 있습니다. 변경 방법을 알고 있지만 작동하지 않는 모든 방법을 시도했습니다. 나는 "5"텍스트 상자가 있고 숨겨져 있고 선택한 콤보 상자 항목 값에 따라 예를 들어 보여줍니다. 총기를 선택한 경우 5 개의 텍스트 상자 모두를 선택하고 탄약을 선택한 경우 3 개의 텍스트 상자 (1,2,3) 만 표시해야합니다. 그리고 하나의 텍스트 상자를 비워두면 경고 메시지 상자가 나타납니다.C#의 if else 문이 작동하지 않습니다.

하지만 문제는 탄창 설정 중에 메시지 상자가 계속 표시 되어도 textfield를 모두 채웠습니다. if else 문에 문제가 있습니까?

if(comboBox1.SelectedItem.ToString() == "Ammo" && 
    textBox1.Text == "" || 
    textBox2.Text == "" || 
    textBox3.Text == "") 

난 당신이 그 값이 비어 있습니다 "탄약"와 텍스트 상자 중 하나라고 할 가정 : (의 다른 세트를 추가

private void insertbtn_Click(object sender, EventArgs e) 
{ 
    string mysql = ""; 
    if (comboBox1.SelectedItem.ToString() == "Firearm") 
    { 
     mysql = "insert into Firearm(Fid,Fname,Ftype,Manufacturer,Price) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')"; 
    } 
    if (comboBox1.SelectedItem.ToString() == "Ammo") 
    { 
     mysql = "insert into Ammo(Aid,Atype,Coating,Metal) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "')"; 
    } 

    if (comboBox1.SelectedItem.ToString() == "Ammo" && textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "") 
    { 
     MessageBox.Show("Please Fill all of the text fields"); 
    } 
    else if (comboBox1.SelectedItem.ToString()=="Firearm" && textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text=="") 
    {   
     MessageBox.Show("Please Fill all of the text fields"); 
    } 
    else 
    { 
     try 
     { 
      SqlConnection conn = new SqlConnection(dbsource); 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(mysql, conn); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("New Data Inserted!"); 
      conn.Close(); 
     } 
     catch (SqlException) 
     { 
      MessageBox.Show("Error!!!"); 
     } 
    }   
} 
+0

당신이 오류를지고의 else if에 대한 동일? – Werdna

+3

'&&'는'||'보다 높은 우선 순위를가집니다. 괄호를 올바르게 사용하십시오. – Phylogenesis

+0

오류가 없지만 그것이 내가 원하는 방식으로 작동하지 않습니다. 이상한 일은 총기의 조건이 완벽하게 작동하고 총 텍스트 필드를 채울 때 messagebox를 표시하지 않으면 총기의 상태를 삭제 한 것입니다. 그리고 다시 총기에 대한 if 문을 넣으면 그때에도 내가 한 것처럼 모든 공백을 채우기 위해 나에게 메시지 상자를 보여주었습니다. – noeway

답변

5

귀하의 문제는이 라인에 아마 ()

if(comboBox1.SelectedItem.ToString() == "Ammo" && 
    (textBox1.Text == "" || 
    textBox2.Text == "" || 
    textBox3.Text == "")) 

그리고 "총기"

+1

정확하게 말하면, 두 번째 술어를 테스트 한 후에 ('textBox4'와'textBox5'가 모두 비어있을 때)'MessageBox'가 보여지고 있습니다. – Phylogenesis

+0

덧붙여 :) 감사합니다 –

+0

고마워요,하지만 추가 괄호 변경 방법 문장을 어떻게 추가 했나요 작동합니다. – noeway

관련 문제