我正在处理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");
}
}
答案 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");
}