不能应用于字符串和字符串类型的操作数

时间:2017-12-24 06:47:47

标签: c#

如果数字低于18

,我尝试将文本框设为红色时出错 你能帮我解决这个问题吗?

我不知道如何解决问题

private void textBox1_TextChanged(object sender, EventArgs e)
            {
                double numt = 18;
                if (textBox1.Text <= numt)   ////error here
                {

                    textBox1.BackColor = Color.Red; 
                }
            else
            {
                textBox1.BackColor = Color.White;
            }

2 个答案:

答案 0 :(得分:0)

textBox1.Text 转换为dobule进行比较。

   if (Convert.ToDouble(textBox1.Text) <= numt)   

答案 1 :(得分:0)

您需要使用textBox1.Textdouble转换为double.Parse(...)。你不能直接&#34;比较字符串和双精度,因为它可能导致完整的无意义操作,如

if ("dog" <= 18)
{
   // Do whatever
}
else if ("chair" > 2.3)
{
   // ...
}

显然,这完全是胡说八道。虽然可能知道textBox1.Text将包含一个数字,但编译器并不知道 - 主要原则是你原则上可以有这种情况。

顺便说一下,不要盲目地信任用户做正确的事情。考虑如果用户输入其他而不是整数,将会发生什么,并在尝试使用它之前对其进行验证。所以,实际上,你知道这将导致一些明智的事情 - 因为你知道的所有用户都可以键入像#34; dog&#34;或&#34;主席&#34;在文本框中,然后你就像我们上面那样有一个明显无意义的情况。