如何制作第三个文本框取决于c#.NET中的第一个和第二个文本框

时间:2016-01-09 14:23:52

标签: c# asp.net

我遇到这个问题或这种情况。我有五个文本框,其中前两个textbox用户需要键入任何值,然后接下来两个文本框将通过使用插入值和某些条件显示结果。最后,另一个textbox将根据显示的结果显示新结果。

这就是我的尝试:

private void textBox3_TextChanged(object sender, EventArgs e)
{
    float value;


    if (float.TryParse(textBox3.Text, out value))
    {
        if (value < 1)
        {
            textBox4.Text = "1C";
        }

        else if (value >= 1 && value <2)
        {
            textBox4.Text = "5T";
        }


        else if (value >= 2)
        {
            textBox4.Text = "NG";
        }
    }
    else
    {
        textBox4.Text = "";
    }
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    float value;

    if (float.TryParse(textBox1.Text, out value))
    {
        if (value < 2)
        {
            textBox2.Text = "2T"; 
        }

        else if (value < 5 || value==2)
        {
            textBox2.Text = "5T";
        }


        else if (value > 5 )
        {
            textBox2.Text = "NG";
        }
        else 
        {
            textBox2.Text = "NG";
        }
    }
    else
    {
        textBox2.Text = ""; 
    }
}

如果用户在&#34; textBox3&#34;中输入值它会在&#34; textBox4&#39;上显示结果, 如果用户在&#34; textBox1&#34;中输入值它将在&#34; textBox2&#34;

显示结果

我想使用&#34; textBox4textBox2&#34;中的值做一些条件检查然后在&#34; textBox84&#34;显示新结果。

我尝试创建代码并将其放在加载函数中,但没有出现:

private void Form1_Load(object sender, EventArgs e)
{
    MessageBox.Show("Please choose the correct FORM .",
        "Important Message !");

    var a = textBox4.Text.ToString();
    var b = textBox2.Text.ToString();

    if (a == "NG" && b == "NG")
    {
        textBox84.Text = "s";
    }
}

1 个答案:

答案 0 :(得分:2)

首先,与textBox3_TextChanged不同,textBox1_TextChanged中的条件可以像这样简化,

private void textBox1_TextChanged(object sender, EventArgs e)
{
    float value;

    if (float.TryParse(textBox1.Text, out value))
    {
        if (value < 2)
        {
            textBox2.Text = "2T"; 
        }

        else if (value < 5) //value==2 can be removed since it is covered in value < 5
        {
            textBox2.Text = "5T";
        }

        else //simply put else here, it is equivalent to what you did
        {
            textBox2.Text = "NG";
        }
    }
    else
    {
        textBox2.Text = ""; 
    }
}

其次,由于textBox84的检查条件仅在表单加载期间完成,

//This is in the Form1_Load
if (a == "NG" && b == "NG")
    {
        textBox84.Text = "s";
    }

由于textBox2textBox4中的文字发生了变化,因此无法执行。您的所有初始化实际上都是在Form1()之后的InitializeComponent构造函数中完成的,而不是Form1_Load

为了安全起见,您应该为textBox2textBox4创建事件处理程序,就像您对textBox1textBox3

所做的那样
private void textBox2_TextChanged(object sender, EventArgs e)
{
    textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";
}

private void textBox4_TextChanged(object sender, EventArgs e)
{
    textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";
}

这样,您的textBox84真实地回复了textBox2textBox4 TextChanged个事件,而不是Form1_Load个事件。

旁注:

表达式

if (textBox2.Text == "NG" && textBox4.Text == "NG")
    textBox84.Text = "s";
else 
    textBox84.Text = "";

可以进一步简化为

textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";

如果您使用三元运算符