Данный пост продолжает серию статей о работе с треем. Как видно из заголовка, здесь будет рассмотрена простая и лично мне очень нравящаяся фича – мигание значка в трее. Получится что-то похожее на мигание «заметки» в QIP, сообщающее о наличии непрочитанных сообщений; или на изменение значка, антивируса Касперского, информирующее о его текущем состоянии и прочее.
Вообще, у меня есть несколько идей, как можно интересно использовать эффект мигания или просто циклической смены значков. Не для «промышленных» приложений, конечно, однако знакомые и друзья смогут оценить:) Хотя об этом наверное будет отдельный пост:)
Итак, перейдем к делу. Для создания эффекта мигания нам потребуется помимо NotifyIcon элемент управления Timer. В нем, чтобы запустить отсчет, нужно обязательно установить значение свойства Enabled в true, а свойства Interval сделать больше 0 (в этом примере оно рано 420). Теперь таймер будет генерировать событие Tick каждый 420 миллисекунд. Для того, чтобы заставить значок мигать, остается только в обработчике этого события прописать соответствующий код. (Ну и не забыть подписаться на это событие, естественно.)
Чтобы не писать одно и то же заново, я решил добавить в код программы из прошлой статьи дополнительный функционал с таймером:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/// /// флаг для организации мигания /// private bool _forBlinking = false; /// /// обрабатываем тик /// void _timer_Tick(object sender, EventArgs e) { //по флагу определяем, какой значок следует сейчас поставить if (_forBlinking) { _notifyIcon.Icon = _myEmptyIcon; _forBlinking = false; } else { _notifyIcon.Icon = _myIcon; _forBlinking = true; } } /// /// наша иконка /// private Icon _myIcon = new Icon("favicon.ico"); /// /// "пустая" иконка /// private Icon _myEmptyIcon = new Icon("emptyicon.ico"); |
И, конечно, подписка на событие при инициализации:
1 2 |
//подписываемся на событие тика таймера _timer.Tick += new EventHandler(_timer_Tick); |
Теперь значок мигает. Мы на шаг ближе к собственному клону аськи:)
Вот архив с примером.
Полезная статья? Их будет больше, если вы поддержите меня!