首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# SaveFileDialog 儲存檔案對話方塊完整使用指南

     編輯:關於C#

核心屬性速查表

屬性說明推薦設定
Filter檔案類型過濾器"文字檔|*.txt|C#程式碼|*.cs|所有檔|*.*"
FilterIndex預設過濾器索引 (1-based)1
RestoreDirectory關閉前還原目前目錄true
DefaultExt預設副檔名 (不含點)"txt"
AddExtension自動附加預設副檔名true
OverwritePrompt檔案存在時詢問覆蓋true
CheckPathExists驗證路徑是否存在true
Title對話方塊標題"請選擇儲存位置"
InitialDirectory初始資料夾Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

基本使用範例


private void btnSaveAs_Click(object sender, EventArgs e)
{
    using (var dialog = new SaveFileDialog())
    {
        dialog.Filter = "文字檔 (*.txt)|*.txt|C# 程式碼 (*.cs)|*.cs|所有檔案 (*.*)|*.*";
        dialog.FilterIndex = 1;
        dialog.DefaultExt = "txt";
        dialog.AddExtension = true;
        dialog.OverwritePrompt = true;
        dialog.RestoreDirectory = true;
        dialog.Title = "另存新檔";
        dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

        if (dialog.ShowDialog() == DialogResult.OK)
        {
            string filePath = dialog.FileName;
            try
            {
                // 使用 File.WriteAllText 簡化寫入,自動處理編碼與關閉
                File.WriteAllText(filePath, txtContent.Text, Encoding.UTF8);
                this.Text = $"編輯中 - {filePath}";
                MessageBox.Show("檔案儲存成功!", "完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"儲存失敗:{ex.Message}", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

進階:自訂檔案類型與預設檔名


dialog.Filter = "JSON 檔案 (*.json)|*.json|XML 檔案 (*.xml)|*.xml";
dialog.DefaultExt = "json";
dialog.FileName = $"Export_{DateTime.Now:yyyyMMdd_HHmmss}.json"; // 預設檔名

整合至 Visual Studio 設計師 (無程式碼設定)

  1. 從工具箱拖曳 SaveFileDialog 到表單 (元件匣區域)。
  2. 在屬性視窗直接設定 Filter、Title、DefaultExt 等屬性。
  3. 在按鈕 Click 事件中直接呼叫 saveFileDialog1.ShowDialog()。

輔助類別:簡易檔案讀寫封裝 (參考用)


public class SimpleFileHelper
{
    private readonly string _filePath;

    public SimpleFileHelper(string filePath) => _filePath = filePath;

    public string ReadAllText(Encoding encoding = null)
    {
        try
        {
            return File.ReadAllText(_filePath, encoding ?? Encoding.UTF8);
        }
        catch (Exception ex)
        {
            MessageBox.Show($"讀取失敗:{ex.Message}");
            return null;
        }
    }

    public void WriteAllText(string content, Encoding encoding = null)
    {
        try
        {
            File.WriteAllText(_filePath, content, encoding ?? Encoding.UTF8);
        }
        catch (Exception ex)
        {
            MessageBox.Show($"寫入失敗:{ex.Message}", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

最佳實踐總結

  1. 預設 UTF-8 編碼:File.WriteAllText(path, content, Encoding.UTF8) 避免中文亂碼。
  2. 啟用 OverwritePrompt:防止使用者誤覆蓋重要檔案。
  3. 設定 DefaultExt + AddExtension:使用者輸入「report」自動變「report.txt」。
  4. 使用 using 區塊:雖然 SaveFileDialog 非 IDisposable 但習慣上建議包裹。
  5. 初始目錄用 SpecialFolder:跨裝置相容、符合使用者習慣。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved