Я заметил ошибку в диалоге поиска папок:
- Откройте диалог поиска нового стиля для папки, в котором есть кнопка «Новая папка».(Например, класс FolderBrowserDialog в .NET Framework или SHBrowseForFolder в Win32 C ++).
- Нажмите кнопку «Создать новую папку», чтобы создать новую папку.
- Введите имя для новой папки.НЕ нажимайте Enter или нажимайте что-либо, чтобы прекратить редактировать имя новой папки после того, как вы закончили вводить его.
- Пока курсор продолжает мигать / поле редактирования все еще активно, нажмите кнопку OK.Вы должны нажать кнопку ОК очень быстро.
- Вместо того, чтобы возвращать новое имя папки в программу, диалог возвращает каталог «Новая папка».Например,
C:\New Folder
вместо того, что набрал пользователь, например, C:\My App Data Files
.
Я предполагаю, что кнопка OK в диалоговом окне считывает имя папки из дерева в виде нажатия кнопки / мыши.событиеЕсли щелкнуть его достаточно быстро, диалоговое окно считывает старое значение «Новая папка», так как древовидная структура не успела обработать переименование.
Конечный результат заключается в том, что диалоговое окно возвращает путь к каталогу.его больше не существует (поскольку оно было переименовано), а затем приложение не работает.
Я могу воспроизвести это на моей рабочей станции для разработчиков Windows 7, но это не ограничивается этим компьютером.Он воспроизводился как в нашем производственном приложении C ++, так и в прототипе приложения C #.
Кто-нибудь еще видел это и знает об обходном пути / исправлении?Этот диалог в новом стиле существует с Windows 2000;Я не могу поверить, что это не было замечено / исправлено, но я не могу найти детали!Я знаю, что он может быть обойден пользователем, например, нажав Enter, подождите немного, затем нажмите OK.Но кажется, что пользователи с меньшим опытом работы с компьютером этого не знают, и это их сбивает с толку.Поэтому я ищу программный обходной путь / исправление.