dandy72 Ответов: 2

Пользовательских расширений файлов, открытых в подхватывает сопоставление с образцом в именем


Привет всем,

Я использую стандартное диалоговое окно открытия файла в моем приложении WinForms, чтобы запросить у пользователя файл лицензии (расширение ".lic") при запуске, если я не нахожу его в предопределенной папке. Мой поисковый фильтр установлен на:

string strFilter = "файлы лицензий (*.lic)|*.lic";

Я заметил небольшую проблему: если в папке, например, есть ... "my.licensemanager.dll" в выбранной папке, затем, поскольку есть совпадение ".lic" как часть *filename* (а не расширение), он включается в список отображаемых файлов - но будучи DLL в этом случае, он, очевидно, никогда не будет допустимым выбором.

Я бы подумал, что поиск "*.lic" не взял бы этот файл - только "*.lic*" взял бы его, если бы это были критерии поиска, которые я бы использовал, - но нет, я использую "*.lic". Вот как ведет себя "dir *.lic" в командной строке - DLL исключается, если я не добавлю завершающий "*".

Я использую диалоговое окно открытия файла уже несколько десятилетий - pre-.NET, pre-MFC, возвращаясь к сырому Win32 API даже в C...и я не замечал этого до сих пор.

Я понимаю, что, вероятно, могу каким-то образом расширить диалог открытия файла, чтобы получить полный контроль над тем, что будет включено, но это (а) кажется мне излишним, и (Б) расширение диалога открытия файла всегда несет с собой некоторые предостережения или непреднамеренную причуду, которая хуже, чем исходная проблема, которую я пытаюсь решить.

Есть ли альтернативный шаблон поиска, который я мог бы использовать-возможно, вариант регулярного выражения, который я пропустил, вместо обычного текста? Я не помню, чтобы когда-либо видел это в документации.

Что я уже пробовал:

Не так много альтернатив, чтобы попробовать - я следую документации к письму, и это кажется мне плохой реализацией.

2 Ответов

Рейтинг:
1

OriginalGriff

Когда я попробую это сделать:

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "License files (*.lic)|*.lic";
if (ofd.ShowDialog() == DialogResult.OK)
    {
    string path = ofd.FileName;
    }
С помощью всего лишь двух файлов в папке "dimchain.lic" и "DMLog.licence.txt-я вижу первую, но не вторую в списке файлов. Если я наберу "d", я смогу увидеть - и выбрать - оба файла во всплывающем списке, но я не могу видеть "DMLog.licence.txt" в списке файлов вообще нет.

Что я делаю иначе, чем вы?


Рейтинг:
0

dandy72

Лучший вопрос. Я видел это на чистых виртуальных машинах Windows 8 и 8.1. В обоих случаях Проводник Windows настроен так, чтобы показывать все (вообще ничего не скрывать-никогда).


Richard Deeming

Если вы хотите ответить на решение, нажмите кнопку "есть вопрос или комментарий?" кнопка под этим решением.

НЕ опубликуйте свой ответ как новое "решение".

dandy72

Спасибо. Я *искал это, но когда есть один ответ, не очевидно, что кнопка является продолжением для *этого*. Это становится более очевидным, когда появляется более одного решения, и для каждого из них есть одна такая кнопка.