【问题标题】:File Save Location Not Always Updated文件保存位置并不总是更新
【发布时间】:2017-12-19 16:32:17
【问题描述】:

我正在使用FolderBrowserDialog 让用户选择一个位置来保存文件和/或创建一个新文件夹。它在 99% 的时间都在工作,但是在某些情况下,当用户单击“创建新文件夹”按钮,更改名称,然后单击“确定”时,将抛出“新文件夹”不存在的异常。

看起来代码仍在寻找名称为“新文件夹”的文件夹,即使用户对其进行了重命名。我可以在我的代码中进行哪些更改来处理此问题,以便文件始终保存在用户选择的文件夹中?

//Declaring Filename
FolderBrowserDialog folderDlg = new FolderBrowserDialog();
folderDlg.ShowNewFolderButton = true;
folderDlg.Description = "Choose the location to save Files";
DialogResult result = folderDlg.ShowDialog();
if (result == DialogResult.OK)
{
    savelocation = folderDlg.SelectedPath;
}

// Choose whether to write header. Use EnableWithoutHeaderText instead to omit header.
dataGridExport.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;
// Select all the cells
dataGridExport.SelectAll();
// Copy selected cells to DataObject
DataObject dataObject = dataGridExport.GetClipboardContent();
// Get the text of the DataObject, and serialize it to a file
File.WriteAllText(savelocation + "\\ExcelExport.csv", dataObject.GetText(TextDataFormat.CommaSeparatedValue));

【问题讨论】:

  • @CaiusJard - 你有替代方法来实现允许用户选择保存位置吗?
  • 顺便说一句,始终使用 Path.Combine 创建文件路径。
  • 您没有代码来处理对话结果不是DialogResult.OK 的情况,当使用savelocation 的默认值时可能会出现问题,因为DialogResult 不同?
  • @0liveradam8 - 我逐步检查了我的代码,当 DialogResult.OK 和用户创建一个新文件夹时会发生这种情况

标签: c# folderbrowserdialog writealltext


【解决方案1】:

这不太可能是您的代码中的错误;用户在 FBD 中创建一个新文件夹,FBD 将路径捕获为...\new folder,用户再次单击它(重命名它),重命名它,然后不再单击它(或单击它并重新打开)用于 FBD意识到名字变了。不是你的错/问题; PEBKAC/PICNIC。每个使用 FBD 的 Windows 软件都会遇到这种情况。

另一方面,FBD 是一个可怕的东西,避免使用它(你不能总是快速将路径粘贴到那里。你必须费力地用鼠标在许多目录中找到你的方式。它变得更加当 FBD 选择的初始目录被重置为某个默认值/不接近用户上次选择的目录时,这很烦人)

改用 OpenFileDialog 并同时提示用户输入要保存的文件名,或者查看诸如 How do you configure an OpenFileDialog to select folders? 之类的 SO 问题,了解人们为绕过 FBD 的限制做了哪些工作

【讨论】:

  • 我只希望用户选择一个保存位置。我不想让他们能够输入文件名
  • 我知道,所以您认为使用 FBD 对用户有利。我恳请您使用几款使用 FBD 的软件,看看您自己的用户体验是多么糟糕。请不要让您的用户经历使用它的痛苦。要么找到一种使用 OFD 的方法(你真的关心用户是否想要他们自己的名字而不是你的名字?),或者为高级用户提供一个文本框来粘贴路径(以克服 FBD 是一个可怕的东西对于鸭蛋用户)并让 FBD 将该文本框更新为保存路径..然后忍受新文件夹问题
  • 嗯 - 我没有意识到 FBD 如此可怕。我喜欢文本框或格式化 winform 的想法,以允许用户输入文件路径
  • 也许你可以看一下选择文件夹的 OpenFileDialog 类型对话框的其他一些实现 - stackoverflow.com/questions/31059/… - 该答案还包含一些库,这些库为默认 FBD 提供了额外的自定义,以消除一些痛点 - windows 本身在 FBD 可以做什么方面非常灵活,只是 .net FBD 控件受到限制
  • 如果你在 WIndows 10 中安装驱动程序并选择“手动浏览...”然后“让我选择”然后“有磁盘...”你会得到“从win95/nt3.5中出现的“软盘驱动器”对话框。Windows的某些部分是古老的!
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多