如何打开消息框 (WPF .NET)

“消息框”是一个用于快速显示信息并允许用户有选择地做出决策的对话框。 对消息框的访问由 MessageBox 类提供。 以模式方式显示消息框。 显示消息框的代码将暂停,直到用户使用关闭按钮或响应按钮关闭消息框。

下图演示了消息框的各个部分:

显示 WPF 消息框部分的图。

  • 带有标题的标题栏 (1)。
  • 关闭按钮 (2)。
  • 图标 (3)。
  • 向用户显示的消息 (4)。
  • 响应按钮 (5)。

对于显示或收集复杂数据,对话框可能比消息框更适合。 有关详细信息,请参阅对话框概述

显示消息框

要创建消息框,可以使用 MessageBox 类。 使用 MessageBox.Show 方法可以配置消息框文本、标题、图标和按钮,如下面的代码所示:

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)

MessageBox.Show 方法重载提供了配置消息框的方法。 这些选项包括:

  • 标题栏标题
  • 消息图标
  • 消息文本
  • 响应按钮

下面是使用消息框的更多示例。

  • 显示警报。

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

    前面的代码显示如下所示的消息框:

    没有配置选项的 WPF 的简单消息框。

    最好使用消息框类提供的选项。 使用与之前相同的警报,设置更多选项,使其更具视觉吸引力:

    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)
    

    前面的代码显示如下所示的消息框:

    WPF 的警告消息框,其中包含图标、标题和文本。

  • 显示警告。

    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)
    

    前面的代码显示如下所示的消息框:

    WPF 的简单消息框,其中显示了警告图标。

  • 询问用户一个问题。

    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
    

    前面的代码显示如下所示的消息框:

    WPF 的简单消息框,提示用户出现“是”或“否”问题。

处理消息框响应

MessageBox.Show 方法显示消息框并返回结果。 结果指示用户如何关闭消息框:

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

当用户按下消息框底部的按钮时,将返回相应的 MessageBoxResult。 但是,如果用户按“ESC”键或按“关闭”按钮(消息框图示中的 #2),则消息框的结果因按钮选项而异

按钮选项 “ESC”或“关闭”按钮结果
OK OK
OKCancel Cancel
YesNo “ESC”键盘快捷方式和“关闭”按钮已禁用。 用户必须按“是”或“否”
YesNoCancel Cancel

有关使用消息框的详细信息,请参阅 MessageBoxMessageBox 示例

另请参阅