C# 中 MessageBox 用法大全

MessageBox 是 .NET Framework 中用于显示消息框的类,它可以向用户展示信息,提示警告,确认用户操作等。常用于 GUI 程序中与用户交互,特别是在 Windows Forms 应用中。

1. 基本使用:

MessageBox 的基本用法是显示一个简单的消息框,可以包含标题、消息内容和按钮。

MessageBox.Show("Hello, World!");

这会显示一个消息框,消息框上显示文本 “Hello, World!”,并带有一个“确定”按钮。

2. 显示带标题的消息框:

你可以设置消息框的标题:

MessageBox.Show("操作成功!", "提示");

这会显示标题为“提示”的消息框,内容为“操作成功!”。

3. 显示带按钮的消息框:

MessageBox 支持多个按钮,如“确定”按钮、“取消”按钮等。你可以选择不同的按钮类型。

MessageBox.Show("你确定要退出吗?", "退出", MessageBoxButtons.YesNo);

这将显示带有“是”和“否”按钮的消息框。

4. 选择消息框的图标:

MessageBox 还允许你选择不同的图标来表示消息的性质,如警告、信息、错误等。

MessageBox.Show("这是一个错误消息", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

常见的 MessageBoxIcon 有:

  • MessageBoxIcon.Information – 信息图标
  • MessageBoxIcon.Warning – 警告图标
  • MessageBoxIcon.Error – 错误图标
  • MessageBoxIcon.Question – 问题图标

5. 返回用户选择的按钮:

MessageBox 的返回值可以帮助我们获取用户点击了哪个按钮。返回值是 DialogResult 类型。

DialogResult result = MessageBox.Show("你确定要保存吗?", "保存", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

if (result == DialogResult.Yes)
{
    // 用户点击了“是”
    Console.WriteLine("保存");
}
else if (result == DialogResult.No)
{
    // 用户点击了“否”
    Console.WriteLine("不保存");
}
else
{
    // 用户点击了“取消”
    Console.WriteLine("取消操作");
}

常用的 DialogResult 值包括:

  • DialogResult.Yes
  • DialogResult.No
  • DialogResult.Cancel
  • DialogResult.OK
  • DialogResult.Abort
  • DialogResult.Retry
  • DialogResult.Ignore

6. 定制消息框的按钮:

你可以使用 MessageBoxButtons 枚举来定制消息框上的按钮。常用的按钮组合有:

  • MessageBoxButtons.OK — 只有一个“确定”按钮
  • MessageBoxButtons.OKCancel — 包含“确定”和“取消”按钮
  • MessageBoxButtons.YesNo — 包含“是”和“否”按钮
  • MessageBoxButtons.YesNoCancel — 包含“是”,“否”和“取消”按钮
  • MessageBoxButtons.RetryCancel — 包含“重试”和“取消”按钮

例如:

MessageBox.Show("是否重试?", "重试", MessageBoxButtons.RetryCancel);

7. 设置默认按钮:

MessageBox 允许你设置默认的按钮,这样如果用户按下回车键,默认按钮就会被点击。

MessageBox.Show("是否保存更改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);

MessageBoxDefaultButton 枚举允许你设置默认按钮:

  • MessageBoxDefaultButton.Button1 – 默认第一个按钮
  • MessageBoxDefaultButton.Button2 – 默认第二个按钮

8. 使用定时关闭消息框:

C# 自身的 MessageBox 没有内建的定时功能,但你可以通过在调用 MessageBox 之前启动一个定时器来实现自动关闭的效果。

using System;
using System.Windows.Forms;
using System.Threading;

public class MessageBoxWithTimeout
{
    public static void ShowWithTimeout()
    {
        Thread messageThread = new Thread(() =>
        {
            MessageBox.Show("这条消息将在 3 秒后自动关闭");
            Thread.Sleep(3000); // 3秒钟后关闭
            Application.Exit();  // 退出应用
        });
        messageThread.Start();
    }
}

9. 自定义消息框(自定义窗体):

如果 MessageBox 不满足需求,可以创建自定义的消息框窗体。你可以自定义按钮、样式和行为。

public class CustomMessageBox : Form
{
    private Button buttonOK;
    private Label messageLabel;

    public CustomMessageBox(string message)
    {
        this.Text = "提示";
        this.Size = new Size(300, 150);

        buttonOK = new Button() { Text = "确定", Location = new Point(100, 60) };
        buttonOK.Click += (sender, e) => { this.Close(); };

        messageLabel = new Label() { Text = message, Location = new Point(50, 20), AutoSize = true };

        this.Controls.Add(buttonOK);
        this.Controls.Add(messageLabel);
    }
}

使用自定义消息框:

CustomMessageBox cmb = new CustomMessageBox("这是一个自定义消息框!");
cmb.ShowDialog();

10. 总结:

MessageBox 是一个简单而强大的工具,可以帮助开发者快速与用户进行交互。通过控制显示的按钮、图标和响应的按钮,开发者可以根据不同场景做出灵活的界面设计。