news 2026/4/15 16:49:44

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C# 里弹出“确定”“取消”对话框

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

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

方法一:最常用 - MessageBox.Show(推荐)
usingSystem.Windows.Forms;// 必须引用这个命名空间// 基本用法MessageBox.Show("这是提示内容","标题",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);

参数说明

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

DialogResultresult=MessageBox.Show("您确定要删除文件吗?","确认删除",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);if(result==DialogResult.OK){// 用户点击了“确定”MessageBox.Show("已删除!");}elseif(result==DialogResult.Cancel){// 用户点击了“取消”MessageBox.Show("操作已取消");}

常用组合示例

// 询问是否保存(是/否/取消)DialogResultres=MessageBox.Show("文件已修改,是否保存?","提示",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);if(res==DialogResult.Yes){// 保存}elseif(res==DialogResult.No){// 不保存,直接关闭}else// Cancel{// 取消关闭}
方法二:使用 MessageBoxButtons.YesNo(更符合中文习惯)

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

DialogResultresult=MessageBox.Show("是否继续执行操作?","确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);if(result==DialogResult.Yes){// 用户点击“是”}
方法三:WinForms 窗体中使用(推荐)

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

privatevoidbtnDelete_Click(objectsender,EventArgse){if(MessageBox.Show("确定要删除选中记录吗?","删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){// 执行删除操作}}
方法四:WPF 项目中使用(如果不是 WinForms)

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

usingSystem.Windows;// WPF 项目中MessageBoxResultresult=MessageBox.Show("确定要退出吗?","退出确认",MessageBoxButton.OKCancel,MessageBoxImage.Question);if(result==MessageBoxResult.OK){// 退出}
方法五:自定义对话框(高级需求)

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

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

publicpartialclassConfirmDialog:Form{publicboolConfirmed{get;privateset;}publicConfirmDialog(stringmessage){InitializeComponent();labelMessage.Text=message;}privatevoidbtnOK_Click(objectsender,EventArgse){Confirmed=true;Close();}privatevoidbtnCancel_Click(objectsender,EventArgse){Confirmed=false;Close();}}

使用:

ConfirmDialogdlg=newConfirmDialog("确定要删除吗?");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){// 执行操作}

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 3:00:33

RMP-121D电源继电器

RMP-121D 电源继电器概述类型:电源继电器 / 通用工业继电器功能:通过控制端的低电压信号,控制电源线路的通断,实现负载的开关控制用途:广泛用于自动化控制、电源切换、保护电路及设备控制主要功能电源控制接收控制信号…

作者头像 李华
网站建设 2026/4/16 14:06:30

1769-L35E控制器

1769-L35E 控制器概述系列:Allen-Bradley MicroLogix 1500类型:紧凑型可编程逻辑控制器(PLC)功能:执行逻辑控制、定时、计数、数据处理和通讯任务应用:适合中小型自动化系统、机器控制和过程控制主要功能逻…

作者头像 李华
网站建设 2026/4/16 12:23:52

C4410590NOUI电源模块

C4410590NOUI 电源模块概述类型:工业控制电源模块功能:为控制系统及其扩展模块提供稳定的直流或交流电源应用:PLC、控制器、继电器板、传感器等工业自动化设备供电主要功能稳压供电将交流电(AC)或不稳定直流电源转换为…

作者头像 李华
网站建设 2026/4/16 2:50:56

Python在天文数据处理中的革命:PB级观测数据的实时分析

Python在天文数据处理中的革命:PB级观测数据的实时分析摘要随着现代天文观测技术的飞速发展,天文数据正以前所未有的速度增长。从射电望远镜阵列到空间望远镜,每天产生的数据量已达PB(拍字节)级别。面对如此庞大的数据流,传统的天…

作者头像 李华
网站建设 2026/4/12 17:50:33

【毕业设计】机器学习基于python卷积神经网络训练形状识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华