SaveFileDialog 文件保存对话框
SaveFileDialog 是一个用来保存文件的对话框控件。通常用于文件导出场景,比如动态生成文档、导出报表时,让用户选择保存路径和文件名。
基本使用
以导出 txt 文件为例,完全可以在后台代码中创建和使用该对话框:
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "文本文件(*.txt)|*.txt|所有文件|*.*"; // 设置文件类型过滤
sfd.FileName = "保存"; // 设置默认文件名
sfd.DefaultExt = "txt"; // 设置默认扩展名
sfd.AddExtension = true; // 自动添加扩展名
if (sfd.ShowDialog() == DialogResult.OK)
{
MessageBox.Show("保存路径:" + sfd.FileName + "\r\n");
using (StreamWriter sw = new StreamWriter(sfd.FileName))
{
sw.WriteLine("XXXX是个好学校");
}
}
MessageBox.Show("ok");
}Code language: JavaScript (javascript)
常用属性
| 属性 | 说明 |
|---|---|
FileName | 获取或设置选中文件的完整路径 |
Filter | 文件类型过滤器,格式同 OpenFileDialog |
FilterIndex | 当前选中的过滤器索引(从 1 开始) |
InitialDirectory | 初始打开的目录 |
Title | 对话框标题 |
DefaultExt | 默认文件扩展名 |
AddExtension | 是否自动在用户输入的文件名后添加扩展名 |
CheckFileExists | 是否检查文件已存在(保存对话框通常设为 false) |
CheckPathExists | 是否检查路径存在 |
CreatePrompt | 文件不存在时是否提示创建 |
OverwritePrompt | 文件已存在时是否提示覆盖确认 |
RestoreDirectory | 关闭后是否恢复当前目录 |
this.saveFileDialog1.Title = "请选择保存位置";
this.saveFileDialog1.InitialDirectory = @"C:\Documents";
this.saveFileDialog1.Filter = "文本文件|*.txt|Word文档|*.doc|所有文件|*.*";
this.saveFileDialog1.FilterIndex = 1;
this.saveFileDialog1.DefaultExt = "txt";
this.saveFileDialog1.AddExtension = true;
this.saveFileDialog1.OverwritePrompt = true; // 文件存在时提示覆盖
this.saveFileDialog1.CheckPathExists = true;Code language: JavaScript (javascript)
常用方法
| 方法 | 说明 |
|---|---|
ShowDialog() | 显示对话框,返回 DialogResult |
OpenFile() | 以写入模式打开选中的文件,返回 Stream |
Reset() | 重置所有属性到默认值 |
// 使用 OpenFile 直接获取文件流(推荐,自动处理路径)
private void button2_Click(object sender, EventArgs e)
{
if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
{
using (Stream stream = this.saveFileDialog1.OpenFile())
using (StreamWriter sw = new StreamWriter(stream))
{
sw.WriteLine("北盟是个好学校");
}
}
}Code language: JavaScript (javascript)
与 OpenFileDialog 的对比
| 对比项 | SaveFileDialog | OpenFileDialog |
|---|---|---|
| 主要用途 | 保存/导出文件 | 打开/选择已有文件 |
| 默认按钮文本 | “保存” | “打开” |
CheckFileExists | 默认 false | 默认 true |
OverwritePrompt | 默认 true | 无此属性 |
OpenFile() | 以写入模式打开 | 以只读模式打开 |

Previous: RichTextBox 富文本编辑控件
Next: SplitContainer 拆分容器控件