Como abrir uma caixa de mensagem (WPF .NET)

Uma caixa de mensagem é uma caixa de diálogo usada para exibir rapidamente informações e, opcionalmente, permitir que os usuários tomem decisões. O acesso à caixa de mensagem é fornecido pela MessageBox classe. Uma caixa de mensagem é exibida modalmente. E o código que exibe a caixa de mensagem é pausado até que o usuário feche a caixa de mensagem com o botão Fechar ou um botão de resposta.

A ilustração a seguir demonstra as partes de uma caixa de mensagem:

A figure that shows the parts of a message box for WPF.

  • Uma barra de título com uma legenda (1).
  • Um botão de fechar (2).
  • Ícone (3).
  • Mensagem exibida ao usuário (4).
  • Botões de resposta (5).

Para apresentar ou coletar dados complexos, uma caixa de diálogo pode ser mais adequada do que uma caixa de mensagem. Para obter mais informações, consulte Visão geral de caixas de diálogo.

Exibir uma caixa de mensagem

Para criar uma caixa de mensagem, use a MessageBox classe. O MessageBox.Show método permite configurar o texto, o título, o ícone e os botões da caixa de mensagem, mostrados no código a seguir:

string messageBoxText = "Do you want to save changes?";
string caption = "Word Processor";
MessageBoxButton button = MessageBoxButton.YesNoCancel;
MessageBoxImage icon = MessageBoxImage.Warning;
MessageBoxResult result;

result = MessageBox.Show(messageBoxText, caption, button, icon, MessageBoxResult.Yes);
Dim messageBoxText As String = "Do you want to save changes?"
Dim caption As String = "Word Processor"
Dim Button As MessageBoxButton = MessageBoxButton.YesNoCancel
Dim Icon As MessageBoxImage = MessageBoxImage.Warning
Dim result As MessageBoxResult

result = MessageBox.Show(messageBoxText, caption, Button, Icon, MessageBoxResult.Yes)

As MessageBox.Show sobrecargas de método fornecem maneiras de configurar a caixa de mensagem. Essas opções incluem:

  • Legenda da barra de título
  • Ícone de mensagem
  • Texto da mensagem
  • Botões de resposta

Aqui estão mais alguns exemplos de como usar uma caixa de mensagem.

  • Exibir um alerta.

    MessageBox.Show("Unable to save file, try again.");
    
    MessageBox.Show("Unable to save file, try again.")
    

    O código anterior exibe uma caixa de mensagem como a seguinte imagem:

    A simple message box for WPF that has no options configured.

    É recomendável usar as opções fornecidas pela classe de caixa de mensagem. Usando o mesmo alerta de antes, defina mais opções para torná-lo visualmente mais atraente:

    MessageBox.Show("Unable to save file, try again.", "Save error", MessageBoxButton.OK, MessageBoxImage.Error);
    
    MessageBox.Show("Unable to save file, try again.", "Save error", MessageBoxButton.OK, MessageBoxImage.Error)
    

    O código anterior exibe uma caixa de mensagem como a seguinte imagem:

    A warning message box for WPF that has an icon, caption, and text.

  • Exiba um aviso.

    MessageBox.Show("If you close the next window without saving, your changes will be lost.", "Configuration", MessageBoxButton.OK, MessageBoxImage.Warning);
    
    MessageBox.Show("If you close the next window without saving, your changes will be lost.", "Configuration", MessageBoxButton.OK, MessageBoxImage.Warning)
    

    O código anterior exibe uma caixa de mensagem como a seguinte imagem:

    A simple message box for WPF that has displays a warning icon.

  • Faça uma pergunta ao usuário.

    if (MessageBox.Show("If the file save fails, do you want to automatically try again?",
                        "Save file",
                        MessageBoxButton.YesNo,
                        MessageBoxImage.Question) == MessageBoxResult.Yes)
    {
        // Do something here
    }
    
    If MessageBox.Show("If the file save fails, do you want to automatically try again?",
                       "Save file",
                       MessageBoxButton.YesNo,
                       MessageBoxImage.Question) = MessageBoxResult.Yes Then
    
        ' Do something here
    
    End If
    

    O código anterior exibe uma caixa de mensagem como a seguinte imagem:

    A simple message box for WPF that prompts the user with a yes or no question.

Manipular uma resposta de caixa de mensagem

O MessageBox.Show método exibe a caixa de mensagem e retorna um resultado. O resultado indica como o usuário fechou a caixa de mensagem:

result = MessageBox.Show(messageBoxText, caption, button, icon, MessageBoxResult.Yes);

switch (result)
{
    case MessageBoxResult.Cancel:
        // User pressed Cancel
        break;
    case MessageBoxResult.Yes:
        // User pressed Yes
        break;
    case MessageBoxResult.No:
        // User pressed No
        break;
}
result = MessageBox.Show(messageBoxText, caption, Button, Icon, MessageBoxResult.Yes)

Select Case result
    Case MessageBoxResult.Cancel
        ' User pressed Cancel
    Case MessageBoxResult.Yes
        ' User pressed Yes
    Case MessageBoxResult.No
        ' User pressed No
End Select

Quando um usuário pressiona os botões na parte inferior da caixa de mensagem, o correspondente MessageBoxResult é retornado. No entanto, se o usuário pressionar a tecla ESC ou pressionar o botão Fechar (#2 na ilustração da caixa de mensagem), o resultado da caixa de mensagem varia com base nas opções do botão:

Opções de botão Resultado do botão ESC ou Fechar
OK OK
OKCancel Cancel
YesNo Atalho de teclado ESC e botão Fechar desativado. O usuário deve pressionar Sim ou Não.
YesNoCancel Cancel

Para obter mais informações sobre como usar caixas de mensagem, consulte MessageBox e o exemplo MessageBox.

Confira também