1

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

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

预先感谢您的任何帮助!

我的应用程序演示

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

        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;
            }
        }


    }
4

1 回答 1

1

我认为这里发生的情况是,每当条形图为 0 时,您将其文本设置为Automatic,然后您尝试更改其颜色,检查其文本是否为 0,但由于您已经将其更改为Automatic条件,因此将始终为 false。 ..

尝试这个:

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;
        }
    }
}
于 2014-10-02T01:36:47.760 回答