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

如何制作第三个文本框取决于c#NET中的第一个和第二个文本框,c#,asp.net,C#,Asp.net,我遇到了这样的问题或这种情况的问题。我有五个文本框,其中前两个textbox用户需要输入任何值,然后下两个文本框将通过使用插入的值和某些条件来显示结果。最后,另一个文本框将根据显示的结果显示新结果 这就是我曾经尝试过的: private void textBox3_TextChanged(object sender, EventArgs e) { float value; if (float.TryParse(textBox3.Text, out value)) {

我遇到了这样的问题或这种情况的问题。我有五个文本框,其中前两个
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 = ""; 
    }
}

首先,与您的
textBox3\u TextChanged
不同,您在
textBox1\u 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 = ""; 
    }
}
textBox2
textBox4
中的文本发生更改时,不太可能执行该命令。所有初始化实际上都是在
Form1()
构造函数中完成的,在
InitializeComponent
之后,而不是在
Form1\u Load

为了安全起见,您应该为
textBox2
textBox4
创建事件处理程序,就像您对
textBox1
textBox3

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
真正响应
textBox2
textBox4
TextChanged
事件,而不是
Form1\u Load
事件

旁注:

表情

if (textBox2.Text == "NG" && textBox4.Text == "NG")
    textBox84.Text = "s";
else 
    textBox84.Text = "";
可以进一步简化为

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

如果使用三值运算符

是否已为Textbox1和Textbox3设置AutoPostBack=“True”?尚未设置。等等,我试试first@KiranHegde是从属性设置它的方法吗?非常感谢@Ian。它解决了问题!!!超级棒!!也谢谢你的解释和提示,我现在明白了,很高兴知道这一点这里的底线是,您真正编写了一些代表真实情况的代码,并且没有什么不同。例如,在这种情况下,由于您希望根据
textBox2
textBox4
更改
textBox84
,因此您应该按原样编码。)
if (textBox2.Text == "NG" && textBox4.Text == "NG")
    textBox84.Text = "s";
else 
    textBox84.Text = "";
textBox84.Text = textBox2.Text == "NG" && textBox4.Text == "NG" ? "s" : "";