Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';如果语句不能正常工作,就不能得到简单的if语句_C# - Fatal编程技术网

C# Can';如果语句不能正常工作,就不能得到简单的if语句

C# Can';如果语句不能正常工作,就不能得到简单的if语句,c#,C#,问题是,无论我尝试什么,只有当两者都为空时才会出现警报。如果其中一个具有值,则将resOne.Text设置为F 代码如下: private void btn_calculate_Click(object sender, EventArgs e) { // START OF AND OPERATION if (comboBox1.Text == "AND" && valueOne.Text != "" || valueTwo.Text !=

问题是,无论我尝试什么,只有当两者都为空时才会出现
警报。如果其中一个具有值,则将
resOne.Text
设置为
F

代码如下:

private void btn_calculate_Click(object sender, EventArgs e)
    {
        // START OF AND OPERATION
        if (comboBox1.Text == "AND" && valueOne.Text != "" || valueTwo.Text != "")
        {
            if (valueOne.Text == "T" || valueOne.Text == "1")
            {
                if (valueTwo.Text == "T" || valueTwo.Text == "1")
                {
                    resOne.Text = "T";
                    resOne.BackColor = Color.LawnGreen;
                    resLineOne.BackColor = Color.LawnGreen;
                }
                else
                {
                    resOne.Text = "F";
                    resOne.BackColor = Color.Salmon;
                    resLineOne.BackColor = Color.Salmon;
                }
            }
            else
            {
                resOne.Text = "F";
                resOne.BackColor = Color.Salmon;
                resLineOne.BackColor = Color.Salmon;
            }
        }
        else if (valueOne.Text == "" || valueTwo.Text == "")
        {
            MessageBox.Show("Error: Empty Fields");
        }
    }

有什么想法吗?

首先,让我们简单地说一下

if (valueOne.Text == "" || valueTwo.Text == "")

   MessageBox.Show("Error: Empty Fields");
}
else{
   // do something 

}
private void btn_calculate_Click(object sender, EventArgs e)
    {
        if (comboBox1.Text == "AND" && valueOne.Text != "" || valueTwo.Text != "")
        {
            //SO This bit assumes everything has a value in
            if (valueOne.Text == "T" || valueOne.Text == "1" || valueTwo.Text == "T" || valueTwo.Text == "1)
            {
                    resOne.Text = "T";
                    resOne.BackColor = Color.LawnGreen;
                    resLineOne.BackColor = Color.LawnGreen;
            }
            else
            {
                resOne.Text = "F";
                resOne.BackColor = Color.Salmon;
                resLineOne.BackColor = Color.Salmon;
            }
        }
        else if (valueOne.Text == "" || valueTwo.Text == "")
        {
            MessageBox.Show("Error: Empty Fields");
        }
    }
如何设置文本框的名称?那可能是你的问题。如果它们不完全是
T
1
,则会导致问题。可能值得尝试
Trim()
方法以确保没有空格。这不是IF声明的问题

如果将文本框设置为“F”,则以下内容没有问题:

if (comboBox1.Text == "AND" && valueOne.Text != "" || valueTwo.Text != "")
您的错误发生在以下位置:

if (valueOne.Text == "T" || valueOne.Text == "1" || valueTwo.Text == "T" || valueTwo.Text == "1)

我建议调试它并逐步执行:)

首先尝试确定空字段。我还将使用
String.IsNullOrEmpty
检查空字符串

    if (String.IsNullOrEmpty(valueOne.Text) || String.IsNullOrEmpty(EmptyvalueTwo.Text))
    {
        MessageBox.Show("Error: Empty Fields");
    }        
    else
    {
        if (comboBox1.Text.equals("AND"))
        {
            if (valueOne.Text.equals("T") || valueOne.Text.equals("1"))
            {
                if (valueTwo.Text.equals("T") || valueTwo.Text.equals("1"))
                {
                    resOne.Text = "T";
                    resOne.BackColor = Color.LawnGreen;
                    resLineOne.BackColor = Color.LawnGreen;
                }
                else
                {
                    resOne.Text = "F";
                    resOne.BackColor = Color.Salmon;
                    resLineOne.BackColor = Color.Salmon;
                }
            }
            else
            {
                resOne.Text = "F";
                resOne.BackColor = Color.Salmon;
                resLineOne.BackColor = Color.Salmon;
            }   
        }
    }

这条线是主要问题

if (comboBox1.Text == "AND" && valueOne.Text != "" || valueTwo.Text != "")
我假设您的组合框。文本总是设置为“和”

然后 什么时候 valueOne.Text为空,valueTwo.Text非空 你完成了任务的第二部分

valueTwo.Text != ""
comboBox1.Text == "AND" && valueOne.Text != ""
什么时候 valueOne.Text非空,valueTwo.Text空 您完成了或的第一部分

valueTwo.Text != ""
comboBox1.Text == "AND" && valueOne.Text != ""
因此,即使其中一个有输入,您也无法转到警报消息。 应该是

if (comboBox1.Text == "AND" && valueOne.Text != "" && valueTwo.Text != "")

否则,如果仅在
表达式为假后进行表达式检查

我将替换
valueOne.Text!=带有
的“
”!String.IsNullOrEmpty(valueOne.Text)
对于valueTwoNow同样,当我看到它时,它是如此明显。。。非常感谢您,如果所需的elseif语句无法执行,那只是因为IF语句或其他elseif语句在它为真之前。不客气。