如何制作一个文本框,根据在 c# 中输入的内容更改其前景色

本文关键字:输入 前景色 何制作 一个 文本 | 更新日期: 2023-09-27 18:30:17

我正在做一个项目,我想有一个文本输入框,如果数字为 0 或更大,则将文本的前色设置为黑色,如果数字小于 0,则设置为红色。这是我到目前为止的代码,它输入在"TextChanged"的文本框事件处理程序下,以便每次文本更改时它都会运行。这是代码,

private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (textBox1.TextLength > 1)
        {
            valueCheck = Convert.ToInt32(textBox1.Text);
        }
        if (valueCheck < 1)
        {
            textBox1.ForeColor = Color.Red;
        }
        else if (valueCheck > 0)
        {
            textBox1.ForeColor = Color.Black;
        }
        else
        {
            textBox1.ForeColor = Color.Black;
        }
        valueCheck = 0;
    }

当我输入任何类型的数字时,问题就来了,它是红色的。但是当我输入第二个正数时,它会变成黑色。我不太确定发生了什么,我认为这可能与代码在每次传递时验证的方式有关。如果有人能帮助我,我将不胜感激。

如何制作一个文本框,根据在 c# 中输入的内容更改其前景色

if (textBox1.TextLength> 1)

输入 1 个任何类型的数字时,文本框 1 的长度不大于 1,因此未设置 valueCheck。

此外,Convert.ToInt32 可以在用户只输入 ( - ) 符号的情况下引发异常。

     private void textBox1_TextChanged(object sender, EventArgs e)
    {
        int valueCheck = 0;
        if (textBox1.TextLength >= 1)
        {
            Int32.TryParse(textBox1.Text, out valueCheck);
        }
        if (valueCheck < 1)
        {
            textBox1.ForeColor = Color.Red;
        }
        else if (valueCheck > 0)
        {
            textBox1.ForeColor = Color.Black;
        }
        valueCheck = 0;
    }

您的第一个 if 语句只会在TextLength大于 1 而不是大于 0 时设置 valueCheck

例:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.TextLength != 0) // more than 0 characters
    {
        valueCheck = Convert.ToInt32(textBox1.Text);
    }
    if (valueCheck >= 0) // Greater/Equal than 0, Black
    {
        textBox1.ForeColor = Color.Black;
    }
    else // less than 0, Red
    {
        textBox1.ForeColor = Color.Red;
    }
    valueCheck = 0;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.TextLength != 0)
    {
        valueCheck = Convert.ToInt32(textBox1.Text);
    }
    textBox1.ForeColor = valueCheck >= 0 Color.Black : Color.Red
    valueCheck = 0;
}