Переключение раскрывающегося списка «Тип файлов» в .NET OpenFileDialog очищает список ошибок файлов - PullRequest
0 голосов
/ 15 июля 2010

Я пытаюсь использовать класс .NET OpenFileDialog в C ++ и получаю странную ошибку.Мой базовый код ниже.

OpenFileDialog^ openFileDialog = gcnew OpenFileDialog;
openFileDialog->InitialDirectory = "c:\\";
openFileDialog->Filter = "Bitmap|*.bmp|All Files|*.*";
openFileDialog->FilterIndex = 1;
openFileDialog->RestoreDirectory = true;
if (openFileDialog->ShowDialog() == DialogResult::OK)
    MessageBox::Show(openFileDialog->FileName, "Information", MessageBoxButtons::OK, MessageBoxIcon::Information);

Когда код достигает этой точки, диалоговое окно открывается, как и ожидалось.Но если я переключу раскрывающийся список «Тип файлов», как это может сделать пользователь, файлы и каталоги, перечисленные в диалоговом окне, исчезнут (независимо от фильтра).Если я зайду в родительский каталог и снова введу тот же дочерний каталог, то файлы и каталоги будут правильно отображены, отфильтрованы, как и ожидалось.Кто-нибудь имеет какие-либо идеи, почему я могу получить эту странную ошибку?

К вашему сведению, я нахожусь на 64-битной Windows XP с пакетом обновления 2, сборка с Visual Studio 2010 для.

1 Ответ

0 голосов
/ 15 июля 2010

Это чисто поведение операционной системы. Диалоговое окно находится в оболочке, класс-оболочка .NET очень тонкий для GetOpenFileName ().

Я не знаю много о XP x64, за исключением того, что это были тренировочные колеса для Vista x64. Это не было сделано с несколькими COM-серверами, еще не переведенными на x64. И то, что это не получило обновление SP3, показалось мне сомнительным. Вы можете предположить, что ваш клиент вряд ли увидит ту же проблему. Сейчас я не близок к тому, чтобы это проверить.

...