KryptonSaveFileDialog ✓ LCode 已集成 对话框
命名空间:Krypton.Toolkit · 程序集:Krypton.Toolkit.dll
简介
KryptonSaveFileDialog 是增强型保存文件对话框,替代标准 System.Windows.Forms.SaveFileDialog。它自动跟随 Krypton 主题渲染,提供文件保存路径选择、过滤器、覆盖确认等功能。当目标文件已存在时会自动弹出覆盖确认提示,用户选择的路径通过 FileName 属性获取。
常用属性
| 属性 | 类型 | 说明 |
|---|---|---|
FileName | string | 用户指定的保存文件完整路径 |
DefaultExt | string | 默认扩展名(用户未输入扩展名时自动追加) |
AddExtension | bool | 是否自动为文件名追加扩展名 |
Filter | string | 文件类型过滤器 |
FilterIndex | int | 默认选中的过滤器索引(从 1 开始) |
InitialDirectory | string | 对话框打开时的初始目录 |
Title | string | 对话框标题栏文字 |
OverwritePrompt | bool | 文件已存在时是否提示覆盖确认(默认 true) |
CreatePrompt | bool | 文件不存在时是否提示创建确认 |
CheckPathExists | bool | 是否检查路径必须存在 |
RestoreDirectory | bool | 关闭时是否恢复应用程序的当前目录 |
快速上手
基本用法
using Krypton.Toolkit;
// 创建保存文件对话框
var saveDialog = new KryptonSaveFileDialog();
saveDialog.Title = "保存文本文件";
saveDialog.Filter = "文本文件|*.txt|RTF 文件|*.rtf|所有文件|*.*";
saveDialog.FilterIndex = 1;
saveDialog.DefaultExt = "txt";
saveDialog.AddExtension = true;
saveDialog.OverwritePrompt = true;
saveDialog.FileName = "未命名.txt";
if (saveDialog.ShowDialog(this) == DialogResult.OK)
{
File.WriteAllText(saveDialog.FileName, richTextBox.Text);
lblStatus.Text = $"已保存:{saveDialog.FileName}";
}
另存为功能
private void SaveAs()
{
var saveDialog = new KryptonSaveFileDialog();
saveDialog.Title = "另存为";
saveDialog.Filter = "C# 文件|*.cs|文本文件|*.txt|所有文件|*.*";
saveDialog.DefaultExt = "cs";
saveDialog.InitialDirectory = Path.GetDirectoryName(_currentFilePath);
saveDialog.FileName = Path.GetFileName(_currentFilePath);
if (saveDialog.ShowDialog(this) == DialogResult.OK)
{
File.WriteAllText(saveDialog.FileName, editor.Text);
_currentFilePath = saveDialog.FileName;
UpdateTitle();
}
}
进阶用法
导出功能(多格式)
// 根据选择的过滤器决定导出格式
private void ExportReport()
{
var dlg = new KryptonSaveFileDialog();
dlg.Title = "导出报表";
dlg.Filter = "PDF 文件|*.pdf|Excel 文件|*.xlsx|CSV 文件|*.csv|HTML 文件|*.html";
dlg.FilterIndex = 1;
dlg.DefaultExt = "pdf";
dlg.FileName = $"报表_{DateTime.Now:yyyyMMdd_HHmmss}";
if (dlg.ShowDialog(this) == DialogResult.OK)
{
switch (dlg.FilterIndex)
{
case 1: ExportToPdf(dlg.FileName); break;
case 2: ExportToExcel(dlg.FileName); break;
case 3: ExportToCsv(dlg.FileName); break;
case 4: ExportToHtml(dlg.FileName); break;
}
KryptonMessageBox.Show(this,
$"报表已成功导出到:\n{dlg.FileName}",
"导出完成",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
}
自动保存与路径记忆
private string _lastSavePath = "";
private void SaveDocument()
{
// 已有路径时直接保存,无需弹对话框
if (!string.IsNullOrEmpty(_currentFilePath) && !_isDirty)
return;
if (string.IsNullOrEmpty(_currentFilePath))
{
var dlg = new KryptonSaveFileDialog();
dlg.Title = "保存文档";
dlg.Filter = "我的文档|*.mydoc|所有文件|*.*";
dlg.DefaultExt = "mydoc";
dlg.InitialDirectory = string.IsNullOrEmpty(_lastSavePath)
? Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
: _lastSavePath;
if (dlg.ShowDialog(this) != DialogResult.OK)
return;
_currentFilePath = dlg.FileName;
_lastSavePath = Path.GetDirectoryName(dlg.FileName);
}
File.WriteAllText(_currentFilePath, SerializeDocument());
_isDirty = false;
}
提示:设置
OverwritePrompt = true(默认值)时,如果用户指定的文件已存在,对话框会自动弹出"是否替换现有文件"的确认提示,无需手动处理。
对应示例项目
📁 Source/Krypton Toolkit Examples/KryptonSaveFileDialog Examples/
包含:基本保存、另存为、多格式导出、路径记忆演示。