Исключая расширения файла от открытого диалогового окна файла в C#

Попробуй таким образом

DELETE FROM recent_edits 
WHERE trackid NOT IN 
     (select * from (SELECT DISTINCT history.trackid 
     FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid 
     GROUP BY recent_edits.trackid) as t);
5
задан 28 May 2009 в 16:43
поделиться

6 ответов

Нет прямого способа сделать это с помощью BCL OpenFileDialog.

Я могу придумать несколько вариантов:

1) Создайте фильтр, который просто имеет все типы вы хотите поддержать. Это была бы моя рекомендация, так как это наиболее распространенный способ выполнения операций такого типа.

2) Используйте что-то вроде этой специальной реализации OpenFileDialog . Затем вы можете переопределить метод OnFileNameChanged (), чтобы потенциально отключить кнопку «Открыть», если выбранный файл имеет расширение .txt.

3) Позвольте пользователю выбрать файл .txt, вызвать диалоговое окно с ошибкой и повторно открыть файл файл диалог. Хотя мне это кажется неуклюжим и не слишком большим ....

2
ответ дан 14 December 2019 в 08:59
поделиться

Вот совершенно другой подход, который вы вряд ли будете использовать.

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

Я не предлагаю вам это делать, но иногда пользователи довольно настаивают на том, что им нужно.

] Другой вариант: вместо использования диалогового окна придумайте что-нибудь совершенно другое, которое хорошо вписывается в приложение. Это может быть невозможно, но тогда мы мало что знаем о приложении.

0
ответ дан 14 December 2019 в 08:59
поделиться

Боюсь, это невозможно. Вам придется либо

  • a) включить длинный список всех расширений, которые должны быть разрешены, либо

  • b) разрешить все расширения, а затем использовать простой код проверки, который повторно открывает диалоговое окно, если выбранный файл имеет расширение .txt .

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

0
ответ дан 14 December 2019 в 08:59
поделиться

I don't think this is possible. The way the filter is set up, is that you can choose which files to show, but I don't think there's a way to show "All files except...". Come to think of it, have you ever seen an Open File Dialog in Windows that has this? I don't think I've ever seen one.

Your best bet is to let them choose all files, and then prompt the user if they select one that isn't allowed OR filter it down to all the possible files that you can deal with.

4
ответ дан 14 December 2019 в 08:59
поделиться

Найдено с помощью поиска Google "OpenFileDialog"

РЕДАКТИРОВАТЬ: Извините за то, что не расширяете аспекты EXCLUDE. Возможно, вам не нужно впадать в эту крайность, но это удовлетворит ваши потребности ....

  • Проведите рекурсивный поиск в каталогах всех файлов, из которых пользователь может выбирать. (Надеюсь, это небольшой набор папок.)
  • Однозначно идентифицируйте расширения этих файлов. (System.IO.Path.GetExtension () и метод Linq .Distint () могут здесь хорошо работать)
  • Удалите запись «.txt» из списка.
  • Создайте строку фильтра, перебирая эти расширения в цикле.
1
ответ дан 14 December 2019 в 08:59
поделиться

Вы не можете установить фильтр на исключить расширений из файловых диалоговых окон.

Однако вы можете реализовать делегат для события FileOk в диалоговом окне . Это событие запускается непосредственно перед тем, как файл, выбранный пользователем, будет принят, а аргументы события предоставляют свойство Cancel , которое вы можете установить, чтобы запретить выбор.

Это не так элегантно, как создание неправильных файлов. невидимым, но это позволит вам запретить выбор неправильного типа файла.

PS: Не забудьте сообщить пользователю, почему файл не был принят, иначе они могут задаться вопросом, почему диалоговое окно не закрывается, когда они выбирают файл 'txt'.

0
ответ дан 14 December 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: