【发布时间】:2014-08-01 13:12:41
【问题描述】:
我在使用 SaveFileDialog 处理 IO 时遇到问题。正如您将在我的以下解决方案中看到的那样,我打开对话框并尝试使用 ExportTXT/ExportCSV 方法保存文件。现在的问题是直接在对话框中输入路径,就像在资源管理器中一样:
C:\Programs\FolderThatDoesntExist\Errors.txt
我总是会收到警告:路径不可用。请检查并重试!!!!
我真的不明白,因为:
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;
}
}
此方法始终由 Export 方法调用,并应确保创建目录。
private void checkDir(string filename)
{
string path = Path.GetDirectoryName(filename);
if (!Directory.Exists(path)) // if it doesn't exist, create
{
Directory.CreateDirectory(path);
}
}
【问题讨论】:
-
您确定文件夹/文件确实存在吗?
-
作为 Windows 的老用户,我的理解是不能以这种方式创建文件夹。至少,我以前从未做过。作为一名长期的 Windows 开发人员,我不希望这能真正起作用。想象一下您打算输入“C:\Programs\FolderThatDoesExist\Errors.txt”而不是“C:\Programs\FolderThatDoesntExist\Errors.txt”的情况,现在您的文件在某个您可能永远找不到的文件夹中关闭。
-
Ähm 是的,我知道您试图向我解释什么,您能向我的客户解释一下吗?我对此真的不满意!但这不是我的主意,我无法反驳他....请不要告诉我我必须编写自己的 FileSaveDialog :D
-
您需要重新对齐客户端的视图。指出他们使用的所有其他程序的行为方式相同。如果他们不会被带过来,那么就发布一个带有文件对话框的程序,该对话框只是一个带有编辑控件的表单,他们可以在其中键入文件名。当他们意识到这是多么垃圾时,请他们做出选择。您不能期望编写自己的文件对话框并使其正常工作。
标签: c# io savefiledialog