C#

C# 里弹出“确定”“取消”对话框

C# 中弹出“确定”“取消”对话框的几种常用方法

C# 中最常用、最简单的弹出“确定/取消”对话框就是使用 MessageBox 类(位于 System.Windows.Forms 命名空间)。以下是详细说明和示例。

方法一:最常用 – MessageBox.Show(推荐)

using System.Windows.Forms;  // 必须引用这个命名空间

// 基本用法
MessageBox.Show("这是提示内容", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

参数说明

  • 第一个参数:提示内容(string)
  • 第二个参数:对话框标题(string)
  • 第三个参数:按钮组合(MessageBoxButtons)
  • OKCancel → 确定 + 取消
  • YesNo → 是 + 否(也常用于确认/取消)
  • YesNoCancel → 是 + 否 + 取消
  • OK → 仅确定
  • 第四个参数:图标(MessageBoxIcon,可选)
  • Question:问号(最常用)
  • InformationWarningErrorExclamation

返回值的处理(判断用户点击了哪个按钮):

DialogResult result = MessageBox.Show("您确定要删除文件吗?", "确认删除", 
                                      MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

if (result == DialogResult.OK)
{
    // 用户点击了“确定”
    MessageBox.Show("已删除!");
}
else if (result == DialogResult.Cancel)
{
    // 用户点击了“取消”
    MessageBox.Show("操作已取消");
}

常用组合示例

// 询问是否保存(是/否/取消)
DialogResult res = MessageBox.Show("文件已修改,是否保存?", "提示", 
                                    MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);

if (res == DialogResult.Yes)
{
    // 保存
}
else if (res == DialogResult.No)
{
    // 不保存,直接关闭
}
else // Cancel
{
    // 取消关闭
}

方法二:使用 MessageBoxButtons.YesNo(更符合中文习惯)

很多中文程序用“是/否”而不是“确定/取消”,这样更友好:

DialogResult result = MessageBox.Show("是否继续执行操作?", "确认", 
                                      MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (result == DialogResult.Yes)
{
    // 用户点击“是”
}

方法三:WinForms 窗体中使用(推荐)

在 WinForms 项目中,通常在 Form 的按钮点击事件中调用:

private void btnDelete_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("确定要删除选中记录吗?", "删除确认", 
                        MessageBoxButtons.OKCancel, MessageBoxIcon.Question) 
                        == DialogResult.OK)
    {
        // 执行删除操作
    }
}

方法四:WPF 项目中使用(如果不是 WinForms)

WPF 没有内置 MessageBox,需要使用 System.Windows.MessageBox(和 WinForms 基本相同):

using System.Windows;  // WPF 项目中

MessageBoxResult result = MessageBox.Show("确定要退出吗?", "退出确认", 
                                          MessageBoxButton.OKCancel, MessageBoxImage.Question);

if (result == MessageBoxResult.OK)
{
    // 退出
}

方法五:自定义对话框(高级需求)

如果需要更美观、自定义布局的对话框,可以:

  • 新建一个 Form(WinForms)
  • 或使用第三方控件(如 MaterialSkin、MetroFramework、MahApps.Metro)
  • 或使用 Task Dialog(Windows Vista 以上系统,需引用 Windows API)

简单自定义示例(新建一个 Form 作为对话框):

public partial class ConfirmDialog : Form
{
    public bool Confirmed { get; private set; }

    public ConfirmDialog(string message)
    {
        InitializeComponent();
        labelMessage.Text = message;
    }

    private void btnOK_Click(object sender, EventArgs e)
    {
        Confirmed = true;
        Close();
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        Confirmed = false;
        Close();
    }
}

使用:

ConfirmDialog dlg = new ConfirmDialog("确定要删除吗?");
dlg.ShowDialog();
if (dlg.Confirmed)
{
    // 执行删除
}

总结对比

方法适用场景优点缺点
MessageBox.Show99% 的简单确认场景简单、原生、无需额外代码样式较老,样式不可自定义
WPF MessageBoxWPF 项目与 WPF 风格一致仅限 WPF
自定义 Form需要美观或复杂布局完全自定义外观、控件代码量稍多
第三方控件追求现代 UI好看、支持主题需要引入 NuGet 包

最推荐的写法(WinForms/WPF 通用):

if (MessageBox.Show("确定要执行此操作吗?", "确认", 
                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question) 
                    == DialogResult.OK)
{
    // 执行操作
}

这样写简单、可靠、兼容性强,绝大多数项目都足够使用。

分类: C#
文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部