本课学习目标
- 使用 MessageBox.Show 显示简单消息。
- 设置消息框标题、按钮和图标。
- 使用 DialogResult 判断用户选择。
- 使用 Yes/No 与 OK/Cancel 进行确认。
- 使用 OpenFileDialog 选择文件。
- 使用 SaveFileDialog 指定保存位置。
- 理解 Filter 和 FileName。
- 使用 ColorDialog 与 FontDialog。
- 认识 FolderBrowserDialog。
- 完成一个带打开、保存、字体、颜色和确认功能的迷你文本编辑器。
19.1 最简单的 MessageBox
MessageBox.Show 是 Windows Forms 中最常用的提示方式之一。
MessageBox.Show("资料已经保存。")
程序会弹出一个标准消息框,用户点击 OK 后关闭。
19.2 加入标题
MessageBox.Show(
"资料已经保存。",
"保存成功")
第一个参数是消息内容,第二个参数是标题。
19.3 按钮与图标
可以继续指定按钮组合和图标:
MessageBox.Show(
"请输入有效成绩。",
"输入错误",
MessageBoxButtons.OK,
MessageBoxIcon.Warning)
信息
一般通知,例如“资料保存成功”。
警告
提醒用户注意,例如输入不完整。
错误
操作失败或发生错误时使用。
询问
配合 Yes/No 等确认按钮。
常见 MessageBoxButtons
| 按钮组合 | 用途示例 |
|---|---|
| OK | 单纯通知。 |
| OKCancel | 继续或取消操作。 |
| YesNo | 确认是否执行。 |
| YesNoCancel | 需要三种选择的情况。 |
| RetryCancel | 操作失败后重试或取消。 |
19.4 DialogResult:用户按了什么?
当消息框有多个按钮时,程序必须知道用户选择了哪一个。
Dim result As DialogResult =
MessageBox.Show(
"确定要清除所有内容吗?",
"确认清除",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question)
然后判断:
If result = DialogResult.Yes Then
txtEditor.Clear()
End If
19.5 典型确认对话框
Dim result As DialogResult =
MessageBox.Show(
"确定要删除这笔资料吗?",
"确认删除",
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning)
If result = DialogResult.No Then
Exit Sub
End If
' 用户选择 Yes,继续删除
19.6 OpenFileDialog:让用户选择文件
比起要求用户手工输入:
C:\Users\...\Documents\notes.txt
更自然的方法是打开 Windows 文件选择对话框。
从 Toolbox 加入 OpenFileDialog,名称设为:
dlgOpen
代码:
If dlgOpen.ShowDialog() = DialogResult.OK Then
txtFilePath.Text = dlgOpen.FileName
End If
19.7 Filter:限制可选择的文件类型
例如只显示文本文件:
dlgOpen.Filter =
"文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"
文本文件 (*.txt)
对应
*.txt
|
所有文件 (*.*)
对应
*.*
每一组由:
显示名称|文件模式
组成,多组之间再用 | 分隔。
19.8 SaveFileDialog:让用户选择保存位置
从 Toolbox 加入 SaveFileDialog,名称设为:
dlgSave
设置:
dlgSave.Filter =
"文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"
dlgSave.DefaultExt = "txt"
dlgSave.FileName = "note.txt"
显示:
If dlgSave.ShowDialog() = DialogResult.OK Then
File.WriteAllText(
dlgSave.FileName,
txtEditor.Text)
End If
19.9 ColorDialog:选择颜色
从 Toolbox 加入 ColorDialog,名称设为:
dlgColor
然后:
If dlgColor.ShowDialog() = DialogResult.OK Then
txtEditor.ForeColor = dlgColor.Color
End If
也可以用于背景色:
txtEditor.BackColor = dlgColor.Color
19.10 FontDialog:选择字体
If dlgFont.ShowDialog() = DialogResult.OK Then
txtEditor.Font = dlgFont.Font
End If
dlgFont.Font 会包含字体名称、大小、粗体、斜体等设置。
19.11 FolderBrowserDialog:选择文件夹
如果程序需要用户选择一个文件夹,而不是具体文件,可以使用:
Using dialog As New FolderBrowserDialog()
dialog.Description =
"请选择要保存资料的文件夹。"
If dialog.ShowDialog() = DialogResult.OK Then
lblFolder.Text =
dialog.SelectedPath
End If
End Using
19.12 对话框为什么出现在窗体下方?
OpenFileDialog、SaveFileDialog、ColorDialog 和 FontDialog 都是“非视觉组件”。它们不会像 Button 或 TextBox 那样直接显示在 Form 上,而是在 Designer 下方的组件区域出现。
Button / TextBox
设计时直接放在窗体上。
OpenFileDialog
设计时出现在组件托盘,运行时才弹出。
真正显示
调用 ShowDialog() 后才会显示标准 Windows 对话框。
19.13 实作:迷你文本编辑器
建立新的 Windows Forms 项目:
MiniTextEditor2026
这个项目把 Lesson 17 的文件读写和本课标准对话框结合起来。
这里可以输入、打开和保存文本内容。
在 Form1 加入:
| 控件 / 组件 | Name | Text / 设置 |
|---|---|---|
| TextBox | txtEditor | Multiline = True;ScrollBars = Both;AcceptsReturn = True |
| Button | btnOpen | Text = 打开 |
| Button | btnSave | Text = 保存 |
| Button | btnFont | Text = 字体 |
| Button | btnColor | Text = 文字颜色 |
| Button | btnClear | Text = 清除 |
| OpenFileDialog | dlgOpen | 打开文本文件 |
| SaveFileDialog | dlgSave | 保存文本文件 |
| FontDialog | dlgFont | 选择字体 |
| ColorDialog | dlgColor | 选择文字颜色 |
Form1.vb 顶部
Imports System.IO
Public Class Form1
打开按钮
Private Sub btnOpen_Click(
sender As Object,
e As EventArgs) Handles btnOpen.Click
dlgOpen.Filter =
"文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"
dlgOpen.Title =
"打开文本文件"
If dlgOpen.ShowDialog() =
DialogResult.OK Then
txtEditor.Text =
File.ReadAllText(
dlgOpen.FileName)
Me.Text =
"Mini Text Editor 2026 - " &
Path.GetFileName(
dlgOpen.FileName)
End If
End Sub
保存按钮
Private Sub btnSave_Click(
sender As Object,
e As EventArgs) Handles btnSave.Click
dlgSave.Filter =
"文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"
dlgSave.Title =
"保存文本文件"
dlgSave.DefaultExt =
"txt"
dlgSave.FileName =
"note.txt"
If dlgSave.ShowDialog() =
DialogResult.OK Then
File.WriteAllText(
dlgSave.FileName,
txtEditor.Text)
MessageBox.Show(
"文件保存成功。",
"保存",
MessageBoxButtons.OK,
MessageBoxIcon.Information)
End If
End Sub
字体按钮
Private Sub btnFont_Click(
sender As Object,
e As EventArgs) Handles btnFont.Click
dlgFont.Font =
txtEditor.Font
If dlgFont.ShowDialog() =
DialogResult.OK Then
txtEditor.Font =
dlgFont.Font
End If
End Sub
文字颜色按钮
Private Sub btnColor_Click(
sender As Object,
e As EventArgs) Handles btnColor.Click
dlgColor.Color =
txtEditor.ForeColor
If dlgColor.ShowDialog() =
DialogResult.OK Then
txtEditor.ForeColor =
dlgColor.Color
End If
End Sub
清除按钮:先确认
Private Sub btnClear_Click(
sender As Object,
e As EventArgs) Handles btnClear.Click
If String.IsNullOrWhiteSpace(
txtEditor.Text) Then
MessageBox.Show(
"目前没有内容需要清除。",
"提示",
MessageBoxButtons.OK,
MessageBoxIcon.Information)
Exit Sub
End If
Dim result As DialogResult =
MessageBox.Show(
"确定要清除所有文字吗?",
"确认清除",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question)
If result =
DialogResult.Yes Then
txtEditor.Clear()
txtEditor.Focus()
End If
End Sub
19.14 程序执行流程
例如打开、保存、字体或颜色。
Windows 负责显示熟悉的选择界面。
只有用户选择 OK、Yes 等确认结果时才继续。
例如 FileName、Color、Font 或 SelectedPath。
读取文件、保存文件、改变字体或修改颜色。
19.15 初学者常见错误
不检查 DialogResult
用户可能点击 Cancel。只有确认选择后才应使用 FileName、Font 或 Color。
以为 OpenFileDialog 会自动读取文件
它只负责选择文件,真正内容仍要通过 File.ReadAllText 等 API 读取。
Filter 格式错误
显示名称和通配符之间需要用 | 分隔。
破坏性操作没有确认
清空或删除前最好使用 Yes/No 对话框确认。
19.16 小练习
- 加入“背景颜色”按钮,使用另一个 ColorDialog 改变 txtEditor.BackColor。
- 加入“选择文件夹”按钮,用 FolderBrowserDialog 显示 SelectedPath。
- 保存前如果 txtEditor 为空,显示 Warning 消息框并取消保存。
- 新增“退出”按钮,先用 Yes/No 询问是否退出程序。
- 把 OpenFileDialog 的 Filter 扩充为 *.txt 与 *.log。
- 打开文件成功后,在窗体标题显示文件名称。
本课复习
- MessageBox.Show 最基本的用途是什么?
- 怎样显示 Yes/No 按钮?
- DialogResult.Yes 表示什么?
- 为什么调用 ShowDialog 后必须检查返回结果?
- OpenFileDialog.FileName 返回什么?
- Filter 的作用是什么?
- SaveFileDialog 会不会自动保存文件内容?
- ColorDialog 与 FontDialog 分别返回什么重要属性?
- 什么时候适合使用 FolderBrowserDialog?
- 为什么清除和删除操作通常需要确认消息框?