【发布时间】:2012-01-09 17:33:35
【问题描述】:
我注意到在浏览文件夹对话框中似乎是一个错误:
- 打开具有“新建文件夹”按钮的新样式文件夹浏览对话框。 (例如 .NET Framework 中的 FolderBrowserDialog 类,或 Win32 C++ 中的 SHBrowseForFolder)。
- 单击“创建新文件夹”按钮创建一个新文件夹。
- 输入新文件夹的名称。输入完成后,请勿按 Enter 或单击任何内容来停止编辑新文件夹名称。
- 当光标仍在闪烁/编辑框仍处于活动状态时,单击“确定”按钮。您必须快速单击“确定”按钮。
- 对话框不会将文件夹的新名称返回给程序,而是返回“新文件夹”目录。例如,
C:\New Folder而不是用户输入的内容,例如C:\My App Data Files。
我的猜测是对话框的“确定”按钮从按钮的“单击/鼠标向上”事件中的树视图中读取文件夹名称。如果单击速度足够快,对话框会读取旧值“新文件夹”,因为树视图没有足够的时间来处理重命名。
最终结果是对话框返回一个不再存在的目录的路径(因为它已被重命名),然后应用程序失败。
我可以在我的 Windows 7 开发人员工作站上重现此内容,但不限于该计算机。它已在我们的生产 C++ 应用程序和原型 C# 应用程序中重现。
有没有其他人看到这个并知道解决方法/修复?这种新型对话框自 Windows 2000 以来就已存在。我不敢相信现在还没有看到/修复,但我找不到细节!我知道它可以由用户解决,例如按 Enter 键,稍等片刻,然后单击确定。但似乎计算机经验较少的用户不知道这一点,这让他们感到困惑。所以我正在寻找一种程序化的解决方法/修复。
【问题讨论】:
-
这种行为一直存在。它可能还没有修复,因为没有人足够关心,因为解决方法非常简单(单击另一个节点,然后返回新节点)。
-
这也不是真正的编程问题吧?
-
@IgbyLargeman:也许有点牵强,但问题似乎是“可以通过编程方式缓解这个问题吗?”
-
这是一个编程问题,因为我们编写的软件表现出这种行为,而且我已经看到它绊倒了我们不了解的用户。我知道您可以单击另一个节点,然后单击返回(或按 Enter 并稍等片刻),但显然并非所有用户都知道这一点!我正在寻找一种程序化的解决方法。
-
@Drew:确切地说,我想我应该更明确地说明这一点。