You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SaveFileDialog无法正常运行,寻求技术解决方案

SaveFileDialog功能问题修复

你的代码存在几个核心问题,导致无法正常运行:

  1. 功能逻辑颠倒:SaveFileDialog是用来选择保存路径和文件名的,不是用来读取文件的,你却用它执行读取操作,完全搞反了用途。
  2. 条件判断错误:用户通过SaveFileDialog选择的文件名可能是新建的(原本不存在),用File.Exists(sfd.FileName)判断会直接跳过后续逻辑,根本无法执行保存操作。
  3. 对话框标题错误:标题写的是"Open Script",和SaveFileDialog的保存功能不匹配,容易造成混淆。

如果你的需求是把文本编辑器的内容保存到文件,修正后的代码如下:

const string FILTER_LUA = "Lua scripts (*.lua)|*.lua";
const string FILTER_TXT = "Text files (*.txt)|*.txt";
const string FILTER_ALL = "All files (*.*)|*.*";

SaveFileDialog sfd = new SaveFileDialog()
{
    InitialDirectory = Environment.CurrentDirectory,
    Filter = $"{FILTER_LUA}|{FILTER_TXT}|{FILTER_ALL}",
    Title = "Save Script",
    // 可选:设置默认文件名或扩展名
    DefaultExt = "lua",
    FileName = "new_script.lua"
};

bool? result = sfd.ShowDialog();

if (result ?? false)
{
    // 将文本编辑器内容写入选中的文件
    File.WriteAllText(sfd.FileName, this.TextEditor.Text);
}

如果你的需求其实是读取文件到文本编辑器,那应该用OpenFileDialog而非SaveFileDialog,修正后的代码如下:

const string FILTER_LUA = "Lua scripts (*.lua)|*.lua";
const string FILTER_TXT = "Text files (*.txt)|*.txt";
const string FILTER_ALL = "All files (*.*)|*.*";

OpenFileDialog ofd = new OpenFileDialog()
{
    InitialDirectory = Environment.CurrentDirectory,
    Filter = $"{FILTER_LUA}|{FILTER_TXT}|{FILTER_ALL}",
    Title = "Open Script"
};

bool? result = ofd.ShowDialog();

if ((result ?? false) && File.Exists(ofd.FileName))
{
    string fileText = File.ReadAllText(ofd.FileName);
    this.TextEditor.Text = fileText;
}

内容的提问来源于stack exchange,提问作者Tim Joey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:30:53