C++17图书管理系统:可编译可运行可交付的工程实践
2026/9/12 20:52:30
C# 中最常用、最简单的弹出“确定/取消”对话框就是使用MessageBox类(位于System.Windows.Forms命名空间)。以下是详细说明和示例。
usingSystem.Windows.Forms;// 必须引用这个命名空间// 基本用法MessageBox.Show("这是提示内容","标题",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);参数说明:
OKCancel→ 确定 + 取消YesNo→ 是 + 否(也常用于确认/取消)YesNoCancel→ 是 + 否 + 取消OK→ 仅确定Question:问号(最常用)Information、Warning、Error、Exclamation等返回值的处理(判断用户点击了哪个按钮):
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{// 取消关闭}很多中文程序用“是/否”而不是“确定/取消”,这样更友好:
DialogResultresult=MessageBox.Show("是否继续执行操作?","确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);if(result==DialogResult.Yes){// 用户点击“是”}在 WinForms 项目中,通常在 Form 的按钮点击事件中调用:
privatevoidbtnDelete_Click(objectsender,EventArgse){if(MessageBox.Show("确定要删除选中记录吗?","删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){// 执行删除操作}}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.Show | 99% 的简单确认场景 | 简单、原生、无需额外代码 | 样式较老,样式不可自定义 |
| WPF MessageBox | WPF 项目 | 与 WPF 风格一致 | 仅限 WPF |
| 自定义 Form | 需要美观或复杂布局 | 完全自定义外观、控件 | 代码量稍多 |
| 第三方控件 | 追求现代 UI | 好看、支持主题 | 需要引入 NuGet 包 |
最推荐的写法(WinForms/WPF 通用):
if(MessageBox.Show("确定要执行此操作吗?","确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK){// 执行操作}这样写简单、可靠、兼容性强,绝大多数项目都足够使用。