Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Фильтр файлов в OpenFileDialog


Автор: marcusmae 4.7.2006, 15:46
Интересно, можно ли в фильтре файлов указать более одного расширения для одного названия? Т.е. нечто вроде

Image Files (*.gif, *.jpg)|*.gif,*.jpg|All Files (*.*)|*.*
( в таком виде не работает) 

Автор: ivashkanet 4.7.2006, 15:58
А в MSDN-е сказано что можно  smile 
Код
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"

Возможно ошибка в том, что 
Цитата(marcusmae @  4.7.2006,  15:46 Найти цитируемый пост)
*.gif,*.jpg

нужно писать либо в скобках, либо через "|" 

Автор: mr.DUDA 4.7.2006, 15:59
В чётной части фильтра (второй, четвёртой, шестой и т.д.) разделитель должен быть не "запятая" а "точка с запятой":

Цитата
Image Files(*.BMP, *.JPG, *.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.* 


 

Автор: ivashkanet 4.7.2006, 16:05
Цитата(mr.DUDA @  4.7.2006,  15:59 Найти цитируемый пост)
 чётной части фильтра (второй, четвёртой, шестой и т.д.) разделитель должен быть не "запятая" а "точка с запятой"

 smile Ого, а почему именно четной.
В MSDN о четности ни слова. Все написано через ";"
Цитата

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 (*.*)|*.*"
 

Автор: marcusmae 4.7.2006, 16:13
Cпасибо. Запятая была неудачной догадкой  smile 
 

Автор: mr.DUDA 4.7.2006, 16:17
Цитата(ivashkanet @  4.7.2006,  16:05 Найти цитируемый пост)
Ого, а почему именно четной.
В MSDN о четности ни слова.

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

Описание есть в мсдн, правда в другом разделе, в WinAPI smile

Цитата
lpstrFilter

Long pointer to a buffer that contains pairs of null-terminated filter strings. The last string in the buffer must be terminated by two NULL characters. 
The first string in each pair is a display string that describes the filter (for example, Text Files), and the second string specifies the filter pattern (for example, *.TXT). To specify multiple filter patterns for a single display string, use a semicolon to separate the patterns (for example, *.TXT;*.DOC;*.BAK). A pattern string can be a combination of valid file name characters and the asterisk (*) wildcard character. Do not include spaces in the pattern string. 

The system does not change the order of the filters. It displays them in the File Types combo box in the order specified in lpstrFilter. 

If lpstrFilter is NULL, the dialog box does not display any filters. 

 

Автор: ivashkanet 4.7.2006, 16:33
Ааа, ты про эту "четную" часть...
Ну тогда здесь четкое разделение: Четная смысловая часть берется в скобки

Добавлено @ 16:34 
Цитата(marcusmae @  4.7.2006,  16:13 Найти цитируемый пост)
догадкой

 smile 
Зачем гадать, если MSDN есть  smile  

Автор: mr.DUDA 4.7.2006, 17:06
Цитата(ivashkanet @  4.7.2006,  16:33 Найти цитируемый пост)
 Четная смысловая часть берется в скобки

Скобки там вообще ни причём. Можно хоть со скобками, хоть без скобок. Чётная и нечётная часть отделяются символом "|". 

Автор: ivashkanet 4.7.2006, 17:34
Цитата(mr.DUDA @  4.7.2006,  17:06 Найти цитируемый пост)
 Чётная и нечётная часть отделяются символом "|"

Точно... Туплю  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)