Попробуй таким образом
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);
Нет прямого способа сделать это с помощью BCL OpenFileDialog.
Я могу придумать несколько вариантов:
1) Создайте фильтр, который просто имеет все типы вы хотите поддержать. Это была бы моя рекомендация, так как это наиболее распространенный способ выполнения операций такого типа.
2) Используйте что-то вроде этой специальной реализации OpenFileDialog . Затем вы можете переопределить метод OnFileNameChanged (), чтобы потенциально отключить кнопку «Открыть», если выбранный файл имеет расширение .txt.
3) Позвольте пользователю выбрать файл .txt, вызвать диалоговое окно с ошибкой и повторно открыть файл файл диалог. Хотя мне это кажется неуклюжим и не слишком большим ....
Вот совершенно другой подход, который вы вряд ли будете использовать.
Вместо использования OpenFileDialog проанализируйте конкретные функции, которые вам нужны, и создайте собственное диалоговое окно. Вы можете легко обеспечить любую фильтрацию, какую захотите, но затем трудности перейдут к внедрению и поддержке нового пользовательского интерфейса.
Я не предлагаю вам это делать, но иногда пользователи довольно настаивают на том, что им нужно.
] Другой вариант: вместо использования диалогового окна придумайте что-нибудь совершенно другое, которое хорошо вписывается в приложение. Это может быть невозможно, но тогда мы мало что знаем о приложении.
Боюсь, это невозможно. Вам придется либо
a) включить длинный список всех расширений, которые должны быть разрешены, либо
b) разрешить все расширения, а затем использовать простой код проверки, который повторно открывает диалоговое окно, если выбранный файл имеет расширение .txt
.
Кроме того, не могли бы вы предоставить более подробный контекст для этого вопроса? У меня возникли проблемы с предвидением сценария, в котором мне может потребоваться явно исключить определенное расширение. Вы, вероятно, не сможете обойтись простым фильтром (и, возможно, небольшой проверкой кода) почти во всех ситуациях.
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.
Найдено с помощью поиска Google "OpenFileDialog"
РЕДАКТИРОВАТЬ: Извините за то, что не расширяете аспекты EXCLUDE. Возможно, вам не нужно впадать в эту крайность, но это удовлетворит ваши потребности ....
Вы не можете установить фильтр на исключить расширений из файловых диалоговых окон.
Однако вы можете реализовать делегат для события FileOk
в диалоговом окне . Это событие запускается непосредственно перед тем, как файл, выбранный пользователем, будет принят, а аргументы события предоставляют свойство Cancel
, которое вы можете установить, чтобы запретить выбор.
Это не так элегантно, как создание неправильных файлов. невидимым, но это позволит вам запретить выбор неправильного типа файла.
PS: Не забудьте сообщить пользователю, почему файл не был принят, иначе они могут задаться вопросом, почему диалоговое окно не закрывается, когда они выбирают файл 'txt'.