Настраиваем диалоговые окна Фильтр, шаблон
В рассмотренных нами диалоговых окнах правильно работают многие кнопки и другие элементы. Однако нам нужно позаботиться кое о каких важных подробностях.
Фильтр. Сейчас мы видим в диалоговых окнах все типы файлов, а значит можем нечаянно попытаться сохранить наш текст, скажем, в графический файл или открыть графический файл, как текстовый, с неожиданными и возможно неприятными результатами. Поскольку текст имеет смысл сохранять только в текстовых файлах, то и не надо нам видеть никаких других. Все эти другие, как говорится, нужно отфильтровать. Для этого служит свойство Filter объектов SaveFileDialog и OpenFileDialog. Если мы напишем
OpenFileDialog1.Filter
= "Текстовые файлы|*.txt"
то нижняя часть диалогового окна открытия файла будет выглядеть так, как на Рис. 20.3.
Рис. 20.3
Пояснения: Свойство Filter имеет своим значением строку, содержимое которой объясняет компьютеру, что не надо отфильтровывать. В простейшем случае эта строка состоит из двух частей, разделенных вертикальной чертой. В левую часть мы пишем произвольный текст, предназначенный для человека и помогающий с нашей точки зрения понять, с каким типом файлов мы имеем дело. Этот текст мы видим в нижнем поле окна (в нашем случае это текст «Текстовые файлы»). Объясняю дальше.
Шаблон. В правой части строки фильтра мы пишем так называемую маску или шаблон. В нашем случае это «*.txt» – звездочка, точка и буквы txt. Точка означает точку, которая стоит в имени файла перед расширением. Буквы txt означают, что мы желаем видеть в окне только файлы с расширением txt. Звездочка слева от точки означает, что в имени файла слева от точки нам подойдут любые символы. Получается, что нам подходят файлы с любыми именами, лишь бы расширением файла служили буквы txt.
На Рис. 20.3 вы можете наблюдать, что в окне видны только указанные файлы, остальные не видны, то есть отфильтрованы.
Фильтр из нескольких вариантов. Если мы хотим дать возможность пользователю выбирать из нескольких типов файлов, мы пишем строку фильтра не из одной, а из нескольких пар. Пары тоже разделены вертикальными чертами. Например, вот строка фильтра из трех пар:
OpenFileDialog1.Filter
= "Текстовые файлы|*.txt|Интернет-страницы|*.htm|Все файлы|*.*"
Звездочка означает, что на ее месте может стоять любой набор символов, поэтому во фрагменте «*.*» звездочка справа от точки означает любое возможное расширение, а слева – любое имя.
Теперь нижняя часть диалогового окна открытия файла будет выглядеть так, как на Рис. 20.4.
Рис. 20.4
Пояснения: Здесь мы можем выбирать в списке одну из 3 возможностей. Соответственно в окне мы будем видеть или только текстовые файлы с расширением txt, или только Интернет-страницы с расширением htm, или все файлы (с любыми расширениями).
Если в одном варианте фильтра вы хотите видеть файлы с несколькими расширениями, вы записываете их шаблоны через точку с запятой:
OpenFileDialog1.Filter = "Картинки|*.BMP;*.JPG;*.GIF|Интернет-страницы|*.htm"
Кстати, поскольку файлы с расширением htm тоже являются текстовыми файлами, их можно прекрасно открывать, редактировать и сохранять в нашем текстовом редакторе.
Примеры шаблонов. Кроме звездочки в шаблонах можно употреблять знак вопроса «?». Он не имеет никакого отношения к вопросам, а означает, что на его месте может стоять один произвольный символ. Пусть в папке содержатся файлы:
База.txt, Банка.txt, Баранка.txt, Баржа.txt, Барка.txt, Заметки.txt
Тогда вот примеры использования шаблонов:
Шаблон |
Какие файлы увидим в окне |
Ба??а.* |
Банка.txt, Баржа.txt, Барка.txt |
Ба?а.* |
База.txt |
Ба*.* |
База.txt, Банка.txt, Баранка.txt, Баржа.txt, Барка.txt |