André Alves de Lima

Talking about Software Development and more…

NotifyIcon – 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.

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):


Fig. 1: Layout do FormExemplo

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. 4: 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!

André Alves de Lima.

One thought on “NotifyIcon – Um Exemplo Simples

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *