c openfiledialog filter несколько расширений

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

OpenFileDialog и SaveFileDialog имеют ряд общих свойств, среди которых можно выделить следующие:

DefaultExt : устанавливает расширение файла, которое добавляется по умолчанию, если пользователь ввел имя файла без расширения

AddExtension : при значении true добавляет к имени файла расширение при его отсуствии. Расширение берется из свойства DefaultExt или Filter

CheckFileExists : если имеет значение true , то проверяет существование файла с указанным именем

CheckPathExists : если имеет значение true , то проверяет существование пути к файлу с указанным именем

FileName : возвращает полное имя файла, выбранного в диалоговом окне

Filter : задает фильтр файлов, благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате Название_файлов|*.расширение. Например, Текстовые файлы(*.txt)|*.txt . Можно задать сразу несколько фильтров, для этого они разделяются вертикальной линией |. Например, Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg

InitialDirectory : устанавливает каталог, который отображается при первом вызове окна

Title : заголовок диалогового окна

Отдельно у класса SaveFileDialog можно еще выделить пару свойств:

CreatePrompt : при значении true в случае, если указан не существующий файл, то будет отображаться сообщение о его создании

OverwritePrompt : при значении true в случае, если указан существующий файл, то будет отображаться сообщение о том, что файл будет перезаписан

Чтобы отобразить диалоговое окно, надо вызвать метод ShowDialog() .

Рассмотрим оба диалоговых окна на примере. Добавим на форму текстовое поле textBox1 и две кнопки button1 и button2. Также перетащим с панели инструментов компоненты OpenFileDialog и SaveFileDialog. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:

Теперь изменим код формы:

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

Определение

Возвращает или задает текущую строку фильтра имен файлов, которая определяет варианты, доступные в поле диалогового окна «Сохранить как файл типа» или «Файлы типа». Gets or sets the current file name filter string, which determines the choices that appear in the «Save as file type» or «Files of type» box in the dialog box.

Значение свойства

Параметры фильтрации файлов, доступные в диалоговом окне. The file filtering options available in the dialog box.

Исключения

Формат Filter является недопустимым. Filter format is invalid.

Примеры

В следующем примере кода используется OpenFileDialog FileDialog реализация и демонстрируется создание, Настройка свойств и отображение диалогового окна. The following code example uses the OpenFileDialog implementation of FileDialog and illustrates creating, setting of properties, and showing the dialog box. В примере используются Filter свойства и FilterIndex для предоставления списка фильтров для пользователя. The example uses the Filter and FilterIndex properties to provide a list of filters for the user. Для примера требуется форма с Button помещенным в нее System.IO и пространством имен. The example requires a form with a Button placed on it and the System.IO namespace added to it.

Комментарии

Для каждого параметра фильтрации строка фильтра содержит описание фильтра, за которым следуют вертикальная черта (|) и шаблон фильтра. For each filtering option, the filter string contains a description of the filter, followed by the vertical bar (|) and the filter pattern. Строки для различных параметров фильтрации разделяются вертикальной чертой. The strings for different filtering options are separated by the vertical bar.

Ниже приведен пример строки фильтра. The following is an example of a filter string:

Text files (*.txt)|*.txt|All files (*.*)|*.*

В фильтр можно добавить несколько шаблонов фильтров, разделяя типы файлов точкой с запятой, например: You can add several filter patterns to a filter by separating the file types with semicolons, for example:

Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*

FilterIndex Используйте свойство, чтобы задать, какой параметр фильтрации отображается первым для пользователя. Use the FilterIndex property to set which filtering option is shown first to the user.

I have this code, how can I allow it to accept all typical image formats? PNG, JPEG, JPG, GIF?

Here’s what I have so far:

Notice that the filter is set to .txt files. I could change to PNG, but what of the other types?

11 Answers 11

From the docs, the filter syntax that you need is as follows:

i.e. separate the multiple extensions with a semicolon — thus, Image Files|*.jpg;*.jpeg;*.png;. .

Follow this pattern if you browsing for image files:

Here’s an example of the ImageCodecInfo suggestion (in VB):

And it looks like this:

Complete solution in C# is here:

To filter images files, use this code sample.

I like Tom Faust’s answer the best. Here’s a C# version of his solution, but simplifying things a bit.

For images, you could get the available codecs from GDI (System.Drawing) and build your list from that with a little work. This would be the most flexible way to go.

Just a necrocomment for using string.Join and LINQ.

For those who don’t want to remember the syntax everytime here is a simple encapsulation:

In order to match a list of different categories of file, you can use the filter like this:

This is extreme, but I built a dynamic, database-driven filter using a 2 column database table named FILE_TYPES, with field names EXTENSION and DOCTYPE:

Obviously I had many different types and extensions, but I’m simplifying it for this example. Here is my function:

Should yield a filter that looks like this:

Оцените статью