C# 没有现有路径的文件保存对话框?
我在使用SaveFileDialog处理IO时遇到问题。正如您将在下面的解决方案中看到的,我打开对话框,并尝试使用ExportTXT/ExportCSV方法保存文件。现在的问题是,像在资源管理器中一样,直接在对话框中键入路径: C:\Programs\FolderThatDoesnTextist\Errors.txt 我总是会收到警告:路径不可用。请检查并重试 我真的不明白,因为:C# 没有现有路径的文件保存对话框?,c#,io,savefiledialog,C#,Io,Savefiledialog,我在使用SaveFileDialog处理IO时遇到问题。正如您将在下面的解决方案中看到的,我打开对话框,并尝试使用ExportTXT/ExportCSV方法保存文件。现在的问题是,像在资源管理器中一样,直接在对话框中键入路径: C:\Programs\FolderThatDoesnTextist\Errors.txt 我总是会收到警告:路径不可用。请检查并重试 我真的不明白,因为: dlg.CheckPathExists = false; property is set to fa
dlg.CheckPathExists = false;
property is set to false!
private void ExportToFile_Click(object sender, EventArgs e)
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.FileName = "Errors"; // Default file name
dlg.DefaultExt = ".csv"; // Default file extension
dlg.OverwritePrompt = true;
dlg.CheckPathExists = false;
dlg.AddExtension = true;
dlg.Filter = "CSV Files (*.csv)|*.csv|Text documents (.txt)|*.txt"; // Filter files by extension
dlg.FileOk += dlg_FileOk;
// Show save file dialog box
dlg.ShowDialog();
}
void dlg_FileOk(object sender, CancelEventArgs e)
{
// Process save file dialog box results
var extension = Path.GetExtension(((SaveFileDialog)sender).FileName);
switch (extension.ToLower())
{
case ".txt":
exportTXT(((SaveFileDialog)sender).FileName);
break;
case ".csv":
exportCSV(((SaveFileDialog)sender).FileName);
break;
default:
exportTXT(((SaveFileDialog)sender).FileName);
break;
}
}
导出方法始终调用此方法,并应确保创建目录
private void checkDir(string filename)
{
string path = Path.GetDirectoryName(filename);
if (!Directory.Exists(path)) // if it doesn't exist, create
{
Directory.CreateDirectory(path);
}
}
这是人们通常习惯的总体想法:
Browse
按钮(或简单的…
),它会打开一个保存文件对话框
,并提示输入位置或者,您可以提供一个
FolderBrowser对话框
,让您的用户选择一个特定的文件夹。您是否确保文件夹/文件确实存在?作为Windows的长期用户,我的理解是,您不能以这种方式创建文件夹。至少,我以前从未做过。作为一名长期的Windows开发人员,我不认为这会真正起作用。想象一下,如果你想输入“C:\Programs\FolderThatDoesExist\Errors.txt”而不是“C:\Programs\FolderThatDoesTextist\Errors.txt”,现在你的文件被放在一个你可能永远找不到的文件夹中。嗯,是的,我知道你想向我解释什么,你能向我的客户解释一下吗?我真的不高兴!但这不是我的主意,我也不能反驳他。。。。请不要告诉我我必须编写一个自己的FileSaveDialog:你需要重新调整客户端的视图。指出他们使用的所有其他程序都以相同的方式运行。如果他们不被邀请,可以发送一个带有文件对话框的程序,该对话框只是一个带有编辑控件的表单,他们可以在其中键入文件名。当他们意识到这是多么垃圾时,请他们做出选择。您不能期望编写自己的文件对话框并使其正常工作。