执行if和else条件

时间:2013-02-15 15:02:23

标签: c# winforms if-statement

我正在处理Windows窗体。我面临着非常奇怪的问题。

在一个按钮事件处理程序中,我已应用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");
            }

        }

4 个答案:

答案 0 :(得分:6)

如果第一个if未执行,您的其他人将被解雇。我怀疑你想要else if用于你的第二个if

当您的代码成立时,第一个if可能会评估为真。然后逻辑将落入第二个if。如果不满足该条件,则else将执行。

答案 1 :(得分:0)

也许你首先错过了一个返回语句?

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

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

答案 2 :(得分:0)

如果选中radiobutton1,则执行第一个条件,如果ds is not null您的代码没有返回,但检查第二个if。如果两个单选按钮是互斥的,则不能为真,否则执行else。

如果您想显示一个消息框,如果您的网格没有客户,您可以重写代码以检查最后的空ds

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");

答案 3 :(得分:0)

如果满足匹配if的条件,则永远不会执行else。但是你必须分开if和第二个不依赖于第一个。您的代码的简化版本将是

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

if(b){}
else{
}

如果a或d为假,则执行将到达第二个if。如果b也为假,那么将执行else。

如果您打算仅在a和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");
}