Затухание цвета фона нескольких элементов управления
Привет ребята,
у меня есть 4 текстовых поля в моих формах windows, где пользователь должен вводить текст.
Поэтому, если одно из текстовых полей пусто, я хочу одновременно изменить цвет фона всех пустых текстовых полей с белого на красный и обратно.
Что я уже пробовал:
for (int i = 0; i < 255; i++) { foreach (var myControl in myDailyToDoControlList) { if (myControl.Text == "") { myControl.BackColor = System.Drawing.Color.FromArgb(255, 255 - i, 255 - i); myControl.Refresh(); } } } for (int i = 0; i < 255;i++ ) { foreach (var myControl in myDailyToDoControlList) { if (myControl.Text == "") { myControl.BackColor = System.Drawing.Color.FromArgb(255, 0 + i, 0 + i); myControl.Refresh(); } } }
Я имею в виду, что это прекрасно работает, но это очень медленное решение. Это занимает очень много времени.
Поэтому я изменил его на этот:
for (int i = 0; i < 255; ) { foreach (var myControl in myDailyToDoControlList) { if (myControl.Text == "") { ((Control)myControl).BackColor = System.Drawing.Color.FromArgb(255, 255 - i, 255 - i); myControl.Refresh(); } } i+=5; } for (int i = 0; i < 255;) { foreach (var myControl in myDailyToDoControlList) { if (myControl.Text == "") { ((Control)myControl).BackColor = System.Drawing.Color.FromArgb(255, 0 + i, 0 + i); myControl.Refresh(); } } i+=5; }
Я удалил i++ в операторе for и увеличил его на 5 в конце цикла for. И да, это быстрее, но это уродливо. :)
Поэтому я просто спрашиваю, есть ли еще одно более быстрое решение, может быть, с потоковой передачей или что-то в этом роде? Или вы думаете, что мое решение-хорошее?
Спасибо.
дагоги
CHill60
Резьба не будет иметь никакого значения, так как это все равно должно быть сделано в потоке пользовательского интерфейса - реальный вопрос заключается в том, почему вы хотите выцветить цвет? Просто установите его на фиксированный цвет "это текстовое поле нуждается в вводе данных" - мгновенный
0x01AA
Что значит "медленно"? Если я сделаю это на своем ноутбуке, то время затухания с шагом 1 будет меньше 2 сек. Если бы это было быстрее, вы почти не видите эффекта затухания.
С другой стороны, должен признаться, я ожидал, что это будет гораздо быстрее. Я ожидал, что никто даже не заметит эффекта затухания...
Кстати, из-за нелинейной чувствительности вы можете легко работать в диапазоне от 255 до 55 для "затухания" и наоборот для "затухания".