Desenvolvimento - C#
.NET: Notify Icon – Um exemplo simples
Acompanhando fórums e Newsgroups, percebi que algumas pessoas têm dúvidas em relação ao uso do NotifyIcon. Observando isso, resolvi criar uma aplicação simples, contendo somente um Form, Label, TextBox e NotifyIcon que, ao minimizarmos o Form, um NotifyIcon é criado na System Tray exibindo um balão de informações (contidas ou não no TextBox) e, ao clicarmos duas vezes sobre o NotifyIcon exibido, o Form é reexibido e o NotifyIcon é escondido.
por André Alves de Lima1. Porquê do exemplo
Acompanhando fórums e Newsgroups, percebi que algumas pessoas têm dúvidas em relação ao uso do NotifyIcon. Observando isso, resolvi criar uma aplicação simples, contendo somente um Form, Label, TextBox e NotifyIcon que, ao minimizarmos o Form, um NotifyIcon é criado na System Tray exibindo um balão de informações (contidas ou não no TextBox) e, ao clicarmos duas vezes sobre o NotifyIcon exibido, o Form é reexibido e o NotifyIcon é escondido.
Quero deixar claro que este artigo é pro pessoal iniciante, por isso, tentarei detalhar o procedimento o melhor que puder.
2. Criando o Form e a NotifyIcon
Criemos então, um novo projeto usando Visual C# 2005 Express ou Visual Basic 2005 Express (é claro que tudo o que veremos aqui funciona também nas versões pagas do Visual Studio 2005, mas usarei completamente as versões Express no desenvolver dos artigos).
No form que já aparece criado no projeto, vamos alterar as propriedades: (Name = FormExemplo; Text = Exemplo; FormBorderStyle = FixedSingle; MaximizeBox = false).
Feito isso, insira no Form um Label (Name = labelTexto; Text = Texto), um TextBox (Name = textBoxTexto) e um NotifyIcon (Name = notifyIcon1; Icon = Algum ícone que você quiser exibir; Visible = false) de modo que ele fique algo como a imagem abaixo (todos esses controles estão localizados na parte Common Controls da ToolBox):
Obs: É extremamente importante definir um ícone (icon - extensão .ico) para que a aplicação funcione.
Fig. 1: Layout do
FormExemplo
3. Criando os eventos
Vamos criar agora, o código do evento Resize do Form, que tratará a ação de minimizar o Form.
Clique no Form e, na janela de propriedades, clique no botão dos eventos (simbolizado por um raio) e dê um duplo clique no evento Resize:
Fig. 2: Criando o evento Resize do Form
O código para tal evento é o seguinte (o código está comentado, por isso não detalharei no artigo a funcionalidade das linhas de código abaixo):
C#
// As linhas abaixo criam um balão no notifyIcon com algumas informações
// e mostram o notifyIcon e o balão...
notifyIcon1.Visible = true;
// O toolTipText do notifyIcon e o título do balão são setados com o mesmo
// texto do Form ("Exemplo" no caso):
notifyIcon1.Text = this.Text;
notifyIcon1.BalloonTipTitle = this.Text;
// O BalloonTipText não aceita texto vazio, portanto, se o texto do textBox estiver vazio,
// atribuimos um texto fixo a ele como vemos abaixo:
if (!this.textBoxTexto.Text.Equals(String.Empty))
{
notifyIcon1.BalloonTipText = this.textBoxTexto.Text;
}
else
{
notifyIcon1.BalloonTipText = "Clique duas vezes no ícone para retornar à aplicação!";
}
// Aqui escondemos o form da taskbar...
this.ShowInTaskbar = false;
// O valor que passamos neste método indica o tempo que o balão vai aparecer.
// 0 (zero) no caso, significa que mostraremos o balão até que o usuário o feche...
notifyIcon1.ShowBalloonTip(0);
VB.NET
" As linhas abaixo criam um balão no notifyIcon com algumas informações
" e mostram o notifyIcon e o balão...
notifyIcon1.Visible = True
" O toolTipText do notifyIcon e o título do balão são setados com o mesmo
" texto do Form ("Exemplo" no caso):
notifyIcon1.Text = Me.Text
notifyIcon1.BalloonTipTitle = Me.Text
" O BalloonTipText não aceita texto vazio, portanto, se o texto do textBox estiver vazio,
" atribuimos um texto fixo a ele como vemos abaixo:
If Not Me.textBoxTexto.Text.Equals(String.Empty) Then
notifyIcon1.BalloonTipText = Me.textBoxTexto.Text
Else
notifyIcon1.BalloonTipText = "Clique duas vezes no ícone para retornar à aplicação!"
End If
" Aqui escondemos o form da taskbar...
Me.ShowInTaskbar = False
" O valor que passamos neste método indica o tempo que o balão vai aparecer.
" 0 (zero) no caso, significa que mostraremos o balão até que o usuário o feche...
notifyIcon1.ShowBalloonTip(0)
Feito isso, ao minimizarmos o Form, ele desaparece da Task Bar e um NotifyIcon é criado na System Tray.
Agora só falta a parte de, ao dar duplo clique no NotifyIcon, o NotifyIcon ser ocultado e o Form ser reexibido. Para isso, clique no NotifyIcon, abra a parte eventos na janela de propriedades e dê um duplo clique no evento MouseDoubleClick:
Fig. 3: Criando o evento MouseDoubleClick do NotifyIcon
O código para tal evento é o seguinte:
C#
// Aqui escondemos o notifyIcon:
notifyIcon1.Visible = false;
// Aqui restauramos o form e reexibimos ele na taskbar...
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
VB.NET
" Aqui escondemos o notifyIcon:
NotifyIcon1.Visible = False
" Aqui restauramos o form e reexibimos ele na taskbar...
Me.WindowState = FormWindowState.Normal
Me.ShowInTaskbar = True
Pronto! Com isso feito, temos um Form que, ao minimizado some da Task Bar, exibe um NotifyIcon com um balão informativo (com um texto que pode ser digitado no próprio Form) e que, ao darmos duplo clique nele, restauramos o Form e escondemos o NotifyIcon. Simples, não?
Pois é, como disse no começo, esse artigo trata de um assunto muito simples que, porém, já vi várias pessoas tendo dúvidas sobre ele...
Espero que tenham gostado e, até a próxima!