Geralmente, quando precisamos exibir alguma mensagem informativa para os usuários de nossos sistemas, utilizamos funções nativas do framework para apresentar caixas de diálogo no meio da tela. No Delphi, temos as funções ShowMessage, MessageBox, MessageDlg, etc. No Javascript, usamos o famoso alert. No .NET, por sua vez, temos a função MessageBox que já nos fornece uma série de recursos como um conjunto predefinido de botões e ícones para escolhermos os que melhor atendem nossa necessidade.

De fato estas funções nativas atendem muito bem a maioria das situações, porém, às vezes surge a necessidade de exibirmos caixas de diálogo de forma customizada. Uma das formas mais comuns de se fazer isso é apresentando uma pequena janela no canto inferior direito da tela (como é possível ver no Microsoft Windows Live Messenger, quando algum de seus contatos fica online).

Neste artigo, apresentarei uma solução simples, porém bastante adequada para o desenvolvimento de uma janela de diálogo como explicado acima.

Para iniciarmos, devemos criar uma nova aplicação de formulários Windows (Windows Forms Application) e adicionar um segundo form à aplicação.

Devemos então configurar o segundo form de acordo com as especificações a seguir:

  • Name = “frmMensagem”;
  • FormBorderStyle = FixedToolWindow.

A seguir, deve-se adicionar um controle Label ao segundo form e configurá-lo da seguinte forma:

  • Name = “lblTexto”;
  • Dock = Fill;
  • AutoSize = false;
  • TextAlign = MiddleCenter.

O próximo passo é definer uma propriedade do tipo string, no frmMensagem, para que se possa definir mais facilmente a mensagem a ser exibida.

Listagem 1: Definição da propriedade Mensagem no form

public string Mensagem
{
    set { lblTexto.Text = value; }
}

Utilizaremos aqui as dimensões 200x200 para o form que exibirá a mensagem.

Adicionemos então um componente Timer e, no evento, devemos inserir o seguinte código.

Listagem 2: Controle da animação do form

if (this.Height < 200)
{
    this.Height+=2;
    this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
}
else
    this.timer1.Stop();

Este código faz com que o form seja exibido gradativamente até assumir a altura final de 200px. Considerei que o nome do timer foi mantido como “timer1”.

Agora, no evento Load do frmMensagem, controlaremos algumas propriedades do form para que ele seja exibido no canto inferior direito da tela e com as dimensões padrão previamente definidas.

Listagem 3: Evento Load do frmMensagem

this.Width = 200;
this.Height = 0;
this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
this.Top = Screen.PrimaryScreen.WorkingArea.Height - this.Height;
this.timer1.Start();

Ao carregar o form, iniciamos a contagem do timer que tratará a animação.

Podemos agora abrir o form, definindo a mensagem a ser exibida e observar o resultado. No form principal podemos, por exemplo, criar uma função que poderá ser chamada várias vezes, tornando prática a exibição da caixa de diálogo.

A Listagem 4 exibe uma solução para realizar tal tarefa.

Listagem 4: Função para exibir a mensagem

public void ExibirMensagem(string texto, string titulo)
{
    frmMensagem f = new frmMensagem();
    f.Mensagem = texto;
    f.Text = titulo;
    f.Show();
}

Feito isso, já é possível testar o nosso trabalho, por exemplo, adicionando um botão ao form principal e em seu evento Click chamar a função ExibirMensagem, como mostra a listagem a seguir.

Listagem 5: Chamando a função ExibirMensagem

private void button1_Click(object sender, EventArgs e)
{
    ExibirMensagem("Atenção! Esta é uma mensagem para teste.", "Mensagem");
}

O resultado é ilustrado na Figura 1.

Mensagem exibida

Figura 1: Mensagem exibida

Concluímos então nosso código e fico por aqui com este artigo. Espero que o conteúdo apresentado possa ser útil.

Um abraço e até a próxima.