如何制作一个文本框,根据在 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;
}
当我输入任何类型的数字时,问题就来了,它是红色的。但是当我输入第二个正数时,它会变成黑色。我不太确定发生了什么,我认为这可能与代码在每次传递时验证的方式有关。如果有人能帮助我,我将不胜感激。
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;
}