我已经注意到浏览文件夹对话框中似乎是一个错误:
C:\New Folder
而不是用户input的内容,例如C:\My App Data Files
。 我的猜测是对话框的OKbutton从button的“click / mouse-up”事件中的树视图中读取文件夹名称。 如果点击速度足够快,对话框将读取旧值“新build文件夹”,因为树视图没有足够的时间来处理重命名。
最终的结果是,对话框返回到不再存在的目录(因为它已被重命名),然后应用程序失败。
我可以在我的Windows 7开发人员工作站上重现这一点,但不限于该计算机。 它在我们生产的C ++应用程序和原型C#应用程序中都得到了重现。
有没有其他人看到这个,知道一个解决方法/修复? 自Windows 2000以来,这种新型的对话框就已经出现了。 我不能相信这个现在还没有被看到/固定,但我找不到细节! 我知道它可以由用户通过例如按Enter键,等待片刻,然后单击确定。 但是,似乎用户较less的计算机使用经验并不知道这一点,而是让他们绊倒了他们。 所以我正在寻找一个程序化的解决方法/修复。
我建议设置你的野心低,因为你有效地试图修复操作系统本身在这一点上。
考虑在退出对话框后检查GetFileAttributes(folderName) == INVALID_FILE_ATTRIBUTES
。
如果该表达式为真,则再次显示该对话框。 这至少可以防止崩溃或其他故障情况。
您可以检查选定文件夹的存在(无论如何,一个好的做法),如果它不存在,被称为“新建文件夹”,获取父文件夹,找到几秒前由当前创建的子文件夹用户,并假设这是他们想要的。
这可能会一直工作,但它不是万无一失的,所以它不能被认为是健壮的。
最强大的解决方案只是检测条件,并强制用户再次选择文件夹。
这是风险和不便之间的折衷。