WPF - Usando MessageBox


A classe MessageBox exibe uma caixa de mensagem que pode conter texto, botões e símbolos com o objetivo de informar e instruir o usuário.

A classe MessageBox da WPF representa uma caixa de diálogo modal de mensagem que é definida no namespace System.Windows. O método estático Show da MessageBox é o único método que é usado para exibir a caixa de mensagem.

O método Show retorna uma enumeração MessageBoxResult que tem valores como : None , OK, Cancelar, Sim e Não.

Podemos usar MessageBoxResult para descobrir qual botão foi clicado em um MessageBox e tomar uma ação apropriada.

Obs: O método Show possui 13 métodos sobrecarregados que permitem diversas possibilidades de uso.

Usando estes valores podemos usar o MessageBoxResult para descobrir qual botão foi clicado pelo usuário em um MessageBox e realizar o tratamento adequado.

Um dos métodos Show é mostrado a seguir:

MessageBox.Show (IWin32Window, String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions, String, HelpNavigator, Object)

Seguir veremos as principais possibilidades de utilização da classe MessageBox em uma aplicação WPF.

1- A maneira mais simples de usar a MessageBox


MessageBoxResult result = MessageBox.Show("MessageBox Simples");

2- MessageBox com Título


MessageBoxResult result = MessageBox.Show("MessageBox com Título","Macoratti.net"); 

3- MessageBox com Proprietário


MessageBoxResult result = MessageBox.Show(this,"MessageBox com Proprietário (this)"); 

Usando a Enumeração MessageBoxButton

A enumeração MessageBoxButton especifica constantes que definem quais botões serão exibidos na MessageBox:

Membro Descrição
OK A caixa de mensagem contém um botão OK;
OKCancel A caixa de mensagem contém os botões OK e Cancel;
AbortRetryIgnore A caixa de mensagem contém os botões Abort, Retry, e Ignore;
YesNoCancel A caixa de mensagem contém os botões Yes, No, e Cancel;
YesNo A caixa de mensagem contém os botões Yes e No;
RetryCancel A caixa de mensagem contém os botões Retry e Cancel;

A seguir temos um dos exemplos de utilização de MessageBoxButton você pode usar qualquer uma das opções basta depois realizar o tratamento devido da seleção feita pelo usuário;

4- MessageBox com Título e botões Yes, No

if (MessageBox.Show("Deseja fechar a janela ?", "Confirmação", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
    // fechar a janela
}
else
{
    // Tomar outra ação
}

5- MessageBox com Título e botões Yes, No e Cancel

MessageBoxResult result = MessageBox.Show("Deseja fechar esta janela ?",
  "Confirmação", MessageBoxButton.YesNoCancel);
if (result == MessageBoxResult.Yes)
{
this.Close();
}
else if (result == MessageBoxResult.No)
{
    // Código para o botão No
}
else
{
    // Código para o botão Cancel
}

Usando Ícones em uma MessageBox com MessageBoxImage

A enumeração MessageBoxImage permite exibir ícones de acordo com a situação desejada. Veja abaixo os valores possíveis:

Membro Descrição
None A caixa de mensagem não contém símbolos.
Hand A caixa de mensagem contém um símbolo que consiste de um X branco em um círculo com um fundo vermelho.
Question A caixa de mensagem contém um símbolo representando uma questão em um círculo.
Exclamation A caixa de mensagem contém um símbolo de exclamação em um triângulo com fundo amarelo.
Asterisk A caixa de mensagem contém um símbolo de a uma letra I em um círculo com fundo azul.
Stop A caixa de mensagem contém um símbolo de um X branco em um círculo com um fundo vermelho.
Error A caixa de mensagem contém um símbolo de um X branco em um círculo com um fundo vermelho.
Warning A caixa de mensagem contém um símbolo de exclamação em um triângulo com fundo amarelo.
Information A caixa de mensagem contém um símbolo da leta I em um círculo com um fundo azul.

6- MessageBox com Título e botões Yes, No e Ícone Question

string mensagem = "Confirma ? ";
string titulo = "Confirmação";
MessageBoxButton botoes = MessageBoxButton.YesNo;
MessageBoxImage icone = MessageBoxImage.Question;

if (MessageBox.Show(message, titulo, butoes, icone) == MessageBoxResult.OK)
{
    this.Close();
}
else
{
    // Código do botão Cancela

7- MessageBox com Título e botões OK e Cancel e Ícone Warning


MessageBoxResult result = MessageBox.Show(this, "Deseja fechar a janela",
 "Confirmação", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
if (result == MessageBoxResult.OK)
{
   this.Close();
}
else
{
    /// ação para o botão Cancel

O projeto para mostrar os exemplos acima foi criado no SharpDevelop 4.0 usando os controles StackPanel e Button conforme o leiaute abaixo:

Pegue o projeto completo aqui: Wpf_MessageBox.zip

Eu sei é apenas WPF, mas eu gosto...

Referências:

José Carlos Macoratti