以文本框形式有条件地更改 BackColor 的问题

Problem changing condicionally BackColor in a textbox form

我正在尝试在 Windows 形式的文本框中设计一个语句,以便在给定输入为 <> 或 [=13= 时改变背景颜色] 给定变量。

我一直在尝试 if/else ifswitch

private void txtPuntosTotalesAGenerar_KeyPress(object sender, KeyPressEventArgs e)
    {

        if (e.KeyChar == (char)Keys.Enter)
        {
            int finalSamplePoints = Convert.ToInt32(Console.ReadLine());
            int try1 = 1500;

            if (finalSamplePoints > try1)
            {
                txtPuntosTotalesAGenerar.BackColor = Color.Orange;
            }
            else if (finalSamplePoints < try1)
            {
                txtPuntosTotalesAGenerar.BackColor = Color.Red;
            }
            else if (finalSamplePoints == try1)
            {
                txtPuntosTotalesAGenerar.BackColor = Color.Green;
            }
        }
    }

使用这段代码我已经能够获得红色背景颜色,但它永远不会改变,无论我在文本框中引入什么值。

问题是 Console.ReadLine() 在按下 Enter 键时总是给你 0 。

我认为你需要像这样修改逻辑

private void txtPuntosTotalesAGenerar_KeyPress(object sender, KeyPressEventArgs e)
{

    if (e.KeyChar == (char)Keys.Enter)
    {
        int finalSamplePoints = Convert.ToInt32(txtPuntosTotalesAGenerar.Text);
        int try1 = 1500;

        if (finalSamplePoints > try1)
        {
            txtPuntosTotalesAGenerar.BackColor = Color.Orange;
        }
        else if (finalSamplePoints < try1)
        {
            txtPuntosTotalesAGenerar.BackColor = Color.Red;
        }
        else if (finalSamplePoints == try1)
        {
            txtPuntosTotalesAGenerar.BackColor = Color.Green;
        }
    }
}

显然,您需要添加适当的验证以确保正确处理任何非数字输入。