C# 根据用户输入更改标签颜色

C# 根据用户输入更改标签颜色,c#,.net,C#,.net,我正在努力做一个非常基本的程序 我试图允许用户在文本框中输入他们的温度,然后如果温度低于15,单词cold将以蓝色显示在标签中,如果高于15则以红色显示热 到目前为止,这是我的代码: namespace FinalTemperature { public partial class WebForm1 : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e)

我正在努力做一个非常基本的程序

我试图允许用户在文本框中输入他们的温度,然后如果温度低于15,单词cold将以蓝色显示在标签中,如果高于15则以红色显示热

到目前为止,这是我的代码:

namespace FinalTemperature
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            double addTemperature;
            addTemperature = Double.Parse(txttemp.Text);
            lblans.Text = addTemperature.ToString();

            if (txttemp.Text.Trim() == "15")
            {
                lblans.ForeColor = System.Drawing.Color.Red;
            }

            if (txttemp.Text.Trim() == "14") 
            {
                lblans.ForeColor = System.Drawing.Color.Blue;
            }
        }
    }
}

到目前为止,我的程序只在15时以红色显示温度,在14时以蓝色显示温度,并将数字输出到标签上,但目前没有其他数字对颜色产生影响。

您专门测试14和15。您需要将字符串转换为整数,并与>=和进行比较。实际上,您正在将相等性检查为“15”和“14”,忽略所有其他值

试试这个

if(addTemperature < 15)
{
    lblans.ForeColor = System.Drawing.Color.Blue;
}
else
{
    lblans.ForeColor = System.Drawing.Color.Red;
}
if(添加温度<15)
{
lblans.ForeColor=System.Drawing.Color.Blue;
}
其他的
{
lblans.ForeColor=System.Drawing.Color.Red;
}
您需要使用用于检查数字是否小于、大于等的
=
=15),但在这种情况下不需要这样做
其他的
{
lblans.ForeColor=System.Drawing.Color.Red;
}
您以前的代码不起作用的原因是,您只检查了15和14,而没有检查任何其他值

当我读到你的问题时,我也认为a将是一个完美的用途

// If LESS than 15
if (addTemperature < 15)
{
    lblans.ForeColor = System.Drawing.Color.Blue;
}
// Else, meaning anything other is MORE than 15, you could also do:
// else if (addTemperature >= 15), but that wouldn't be needed in this case
else
{
    lblans.ForeColor = System.Drawing.Color.Red;
}
 lblans.ForeColor = addTemperature < 15 ? System.Drawing.Color.Blue : System.Drawing.Color.Red
lblans.ForeColor=addTemperature<15?System.Drawing.Color.Blue:System.Drawing.Color.Red
lblans.ForeColor=addTemperature<15?System.Drawing.Color.Blue:System.Drawing.Color.Red;

这符合您的要求。 将字符串(文本)转换为Int(数字), 并比较这些值

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Int32.Parse(txttemp.Text.Trim()) >= 15)
        {
            lblans.Text = "Hot";
            lblans.ForeColor = System.Drawing.Color.Red;
        } 
        else 
        {
            lblans.Text = "Cold";
            lblans.ForeColor = System.Drawing.Color.Blue;
        }
    }
ASPX 在页面中添加标签

<asp:label id="lbl" runat="server"></asp:label>, 

上面的代码将字符串值转换为Int32,以便您可以将其与所需的任何数值进行比较,而不是将比较后的值作为字符串。您不能对字符串应用除等于之外的逻辑运算符。

为什么否决他的问题,这是一个合法的问题,特别是对于正在学习编程的人来说。@DavidYancey我想一定有人在草草阅读时否决了,但没有意识到OP的要求,这就是为什么我将一些关键字改为粗体。我之所以这么说是因为,MOD,特别是那些查看审查队列的人每天都会看到如此多的可怕问题,以至于有时这些问题会很残酷。@user upvoces被添加以抵消downovoces。很抱歉,你的问题被否决了(不是我提出的)。这可能只是版主们的误解,版主们看到了太多糟糕的问题。@MystereMan所以在假设满足某些标准的情况下,问家庭作业问题没有问题:@Velouse-我在哪里说过有什么问题。我只是问是不是作业。如果是家庭作业,我对待答案的方式不同于其他类型的答案,因为我更喜欢给出提示,让提问者自己得出结论。另外,如果是家庭作业,我们应该添加家庭作业标记。@user2864740,随便什么!;)@戴维达诺-铸造和转化是两件完全不同的事情。@Mystere不,它们不是。请查看C#规范第7.7.6节。我承认我在使用cast这个词时很草率,因为字符串不能转换为int,因为C#定义了这个术语,但是cast是所有C#支持的转换的子集。OP没有提到他正在使用ASPframework@Liel当前位置你看到他给出的代码的第二行了吗。
<asp:label id="lbl" runat="server"></asp:label>, 
if(Convert.ToInt32(txtTemp.Text)>15 )
{
  lbl.Text= "HOT";
  lbl.ForeColor= System.Drawing.Color.Red;
}
else
{
    lbl.Text="COLD";
         lbl.ForeColor= System.Drawing.Color.Blue;
}