我在使用SaveFileDialog进行IO处理时出现问题。正如您将在我的以下解决方案中看到的,我打开Dialog并尝试使用ExportTXT / ExportCSV方法保存文件。现在的问题是直接在Dialog中键入Path,就像在资源管理器中那样:
C:\程序\ 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);
}
}
答案 0 :(得分:0)
这是人们通常习惯的一般观点:
有一个文本框,用户可以通过键入,粘贴或其他方式输入路径。
旁边有一个Browse
按钮(或简称为...
),会打开SaveFileDialog
并提示输入位置。
当您继续操作时,如果文件夹不存在并创建,您可以警告您的用户,或者只是自动创建它。但我更喜欢前一种方法,因为它会阻止你的应用在错别字的情况下创建错误的文件夹。
或者,您可以提供FolderBrowserDialog
,然后让您的用户选择特定的文件夹。