No post anterior, expliquei como colocar um ícone na bandeja para sua aplicação .NET. Mostrei apenas o básico, mas que já é suficiente para alguns usos. Outras características possíveis de se adicionar nestes botões, como os balões de notificação e os menus, trazem um poder muito grande ao seu pequeno ícone.
Configurando e exibindo balões de notificação para ícones na bandeja
Estes são aqueles balões que gerenciadores de download mostram quando um arquivo acaba de ser baixado, ou que o Windows mostra quando há algum problema de segurança, tipo anti-vírus desatualizado ou firewall desabilitado.
Balão de Notificação
Usá-los é bem simples. Você pode configurar um balão padrão, para mostrar quando o mouse é deixado em cima do ícone por exemplo, ou exibir um balão para avisar de algum evento ocorrido na execução de sua aplicação como o término de um download, no caso dos gerenciadores citado anteriormente.
Propriedades de NotifyIcon para o Balão
Para configurar um balão padrão, basta atribuir valores para as propriedades BalloonTipIcon, BalloonTipText e BaloonTipTitle de NotifyIcon, na janela de propriedades. Para mostrar o balão, chame a seguinte linha de código:
notifyIcon1.ShowBalloonTip(10000);
Onde, 10000 é um timeout, um tempo em milissegundos até o balão desaparecer. De acordo com algumas fontes que li, mesmo que você bote 3000ms por exemplo, o sistema operacional vai deixar por no mínimo entre 10 e 30 segundos. No teste que fiz com o XP, o mínimo foram 10s.
Para fazer o balão aparecer quando o mouse passa por cima do ícone*, basta chamar a linha de código acima no evento de MouseMove do seu NotifyIcon. O resultado desta chamada para as propriedades com os valores da imagem acima é o seguinte:
Balão com dados setados na janela de propriedades
Para mostrar um balão com outro texto, algo que necessite por exemplo de dados de tempo de execução, eu recomendo não alterar aquelas propriedades, mas sim chamar outra assinatura deste método. Esta outra assinatura recebe mais três parâmetros além do timeout:
notifyIcon1.ShowBalloonTip(timeout, tituloDoBalao, textoDoBalao, tipoDoBalao);
O título e o texto são auto-explicativos. O tipo do balão é um valor do tipo ToolTipIcon que definirá a imagem que aparece dentro do balão. Este parâmetro pode assumir o valor ToolTipIcon.Info, que diz que o balão representa uma informação qualquer, ToolTipIcon.Error, no qual o balão representa um erro e ToolTipIcon.Warning, que irá conter um aviso para o usuário.
De cima para baixo: Info, Error e Warning
Para exibir o balão, basta em qualquer lugar de seu código, chamar a linha de código acima passando os parâmetros desejados. Você pode avisar sobre algum evento que aconteceu durante a execução da sua aplicação, e mesmo que o usuário esteja com a atenção em outra aplicação, poderá ver o aviso através do balão.
Fica para o próximo post o tutorial de como colocar um menu, acessível ao clicar com o botão direito no ícone da bandeja, onde o usuário poderá acessar algumas funcionalidades de sua aplicação.
* Não recomendo mostrar o balão ao passar o mouse por cima do ícone, pois dificulta clicar no ícone e a também complica a exibição do menu.