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