C # Изменение цвета метки на основе значения трекбара

1

Я работаю с трекбаром, который имеет значение от 0 до 100. В моем коде автоматический = 0, который вы видите на изображении ниже.

То, что я пытаюсь выполнить, состоит в том, что любое число ниже 35 должно менять метки (lableFS) forcolor на красный, тогда как любое число выше, которое должно изменить метки forecolor на зеленый. У меня это нормально работает, однако исключение здесь должно быть в том случае, если значение трекбара равно 0 или даже если для текста labelFS установлено значение "Автоматически", тогда forecolor labelFS должен быть черным. Ниже приведен образ gif, который покажет вам, что я имею в виду, а также мой текущий код.

Спасибо заранее за любую помощь!

Изображение 174551

Я знаю, что это простая проблема, однако я пробовал множество способов, и я не могу найти, что мешает ей перейти на черный.

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


    }
  • 0
    Используйте fanSlider.Value напрямую вместо проверки текста метки
  • 0
    Я собираюсь вернуться и сделать это сейчас, спасибо за совет.
Теги:
colors
trackbar

1 ответ

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;
        }
    }
}
  • 0
    Это то, о чем я подумала. Думаю, у меня сейчас ментальный блок и я не могу понять, где это происходит. В любом случае это сработало, и спасибо за помощь!
  • 0
    @ user3627587 Рад помочь ... :) Иногда это случается и со мной, очень глупые маленькие ошибки занимают мое время, и я продолжаю пытаться найти ошибку, но не могу, и когда я нахожу ее на следующий день, я говорю, черт! : P Если это помогло, пожалуйста, выберите его в качестве ответа и проголосуйте.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню