在C#的WinForms开发中,若希望程序在运行时弹出一个系统风格的窗口,让用户自行决定文件保存到哪里、叫什么名字,直接使用.NET提供的SaveFileDialog类是最简单的做法。该类封装了Windows标准保存对话框,不需要开发者自己画界面。

基本使用步骤
使用SaveFileDialog一般包含几个关键环节:实例化对话框、设置属性、调用ShowDialog方法、判断用户是否点击保存,最后用文件流或File类写数据。
常用属性说明
- Filter:设置文件类型筛选器,如文本文件(*.txt)|*.txt。
- FileName:默认文件名或用户选定后的完整路径。
- Title:对话框标题。
- InitialDirectory:初始打开的目录。
代码示例
下面演示点击按钮后弹出保存对话框,并把文本框内容存成txt文件:
using System;
using System.IO;
using System.Windows.Forms;
namespace SaveFileDemo
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void btnSave_Click(object sender, EventArgs e)
{
// 创建保存对话框实例
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择保存位置";
sfd.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";
sfd.FileName = "未命名";
sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
// 弹出对话框,判断用户是否点击了保存
if (sfd.ShowDialog() == DialogResult.OK)
{
try
{
// 将文本框内容写入用户选定的文件
File.WriteAllText(sfd.FileName, txtContent.Text);
MessageBox.Show("文件已成功保存");
}
catch (Exception ex)
{
MessageBox.Show("保存失败:" + ex.Message);
}
}
}
}
}
使用注意事项
在代码里调用ShowDialog()时,若窗体是顶层模态窗口,它会阻塞父窗体交互,这是正常表现。另外,写文件建议放在try块中,防止用户选了只读目录或磁盘已满导致程序崩溃。
通过流方式保存
如果内容较大或需要边生成边写,可以用StreamWriter:
using (StreamWriter sw = new StreamWriter(sfd.FileName, false))
{
sw.Write(txtContent.Text);
}
这样能更灵活地控制编码与写入过程。总体来看,C#的SaveFileDialog用起来直观,只要注意路径合法性和异常处理,就能稳定实现文件保存功能。
C#SaveFileDialog文件保存修改时间:2026-07-25 17:39:18