C#根据轨迹栏值更改标签颜色

时间:2014-10-02 01:30:02

标签: c# colors trackbar

我正在使用值为0到100的轨道栏。在我的代码中,自动= 0,您可以在下图中看到。

我想要实现的是,任何低于35的数字都应该将颜色的标签(lableFS)更改为红色,而高于此值的任何数字都应该将标签更改为绿色。我的工作正常,但是这里的例外应该是如果轨迹栏的值为0或者即使labelFS文本设置为“自动”,那么labelFS前景应该是黑色的。下面是一个gif图像,它将准确显示我的意思,以及我当前的代码。

提前感谢您的帮助!

Demonstration of my app

我知道这是一个简单的问题,但是我已经尝试了很多方法,我似乎无法找到阻止它变为黑色的原因。

        private void fanSlider_Scroll(object sender, EventArgs e)
    {
        lblFS.Text = "" + fanSlider.Value * 5;

        if (lblFS.Text == "0")
        {
            lblFS.Text = "Automatic";
        }

        int value;
        if (Int32.TryParse(lblFS.Text, out value))
        {
            if (value <= 35)
            {
                lblFS.ForeColor = System.Drawing.Color.Red;
            }
            if (value > 35)
            {
                lblFS.ForeColor = System.Drawing.Color.Green;

            }

            if (value == 0)
            {
                lblFS.ForeColor = System.Drawing.Color.Black;
            }
        }


    }

1 个答案:

答案 0 :(得分:1)

我认为这里发生的事情是,每当条形图为0时,您将其文本设置为Automatic,然后您尝试更改其颜色检查,如果其文本为0但是因为您已经更改了它到Automatic条件总是假的......

试试这个:

private void fanSlider_Scroll(object sender, EventArgs e)
{
    lblFS.Text = "" + fanSlider.Value * 5;
    if (lblFS.Text == "0")
    {
        lblFS.Text = "Automatic";
        lblFS.ForeColor = System.Drawing.Color.Black;
    }
    int value;
    if (Int32.TryParse(lblFS.Text, out value))
    {
        if (value <= 35)
        {
            lblFS.ForeColor = System.Drawing.Color.Red;
        }
        if (value > 35)
        {
            lblFS.ForeColor = System.Drawing.Color.Green;
        }
    }
}