2014-10-02 5 views
1

Я работаю с трекболом, который имеет значение от 0 до 100. В моем коде auto = 0, который вы видите на изображении ниже.C# Изменение цвета метки на основе значения трекбара

Что я пытаюсь сделать, так это то, что любое число ниже 35 должно менять метки (lableFS) forcolor на красный, в то время как любое число выше, которое должно менять метки forecolor на зеленый. У меня это нормально работает, однако исключение здесь должно быть в том случае, если значение трекбара равно 0 или даже если для текста labelFS установлено значение «Автоматически», тогда forecolor 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; 
      } 
     } 


    } 
+0

Использование fanSlider.Value непосредственно вместо проверки текста метки –

+0

Im собирается вернуться и сделать это сейчас, спасибо за совет , – user3627587

ответ

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

Вот о чем я подумал, я думаю, у меня есть ментальный блок прямо сейчас, и я не мог узнать, где это происходит. В любом случае это сработало и спасибо за помощь! – user3627587

+0

@ user3627587 Удовольствие, чтобы помочь ... :) Иногда это случается со мной тоже, очень глупые небольшие ошибки не торопятся, и я стараюсь найти ошибку, но не могу, и когда я нахожу ее на следующий день, я говорю, черт! : P Если это помогло, пожалуйста, выберите его как ответ и поддержите его. –

+0

Сделано и сделано! Еще раз спасибо. – user3627587

 Смежные вопросы

  • Нет связанных вопросов^_^