Элементы OpenFileDialog и SaveFileDialog

We use cookies. Read the Privacy and Cookie Policy

Элементы OpenFileDialog и SaveFileDialog

Практически в каждом приложении пользователь должен иметь возможность сохранить файл или открыть его. Разработчикам регулярно приходится реализовывать подобную функциональность в своих программах. При желании можно самому придумать и разработать интерфейс для подобной задачи. Но можно воспользоваться и стандартными диалоговыми окнами открытия и сохранения файла. Именно для этого применяются элементы управления OpenFileDialog и SaveFileDialog. К сожалению, в версии .NET Compact Framework возможности данных элементов управления серьезно урезаны. Разработчик может манипулировать файлами только в пределах папки My Documents и вложенных папок следующего уровня. Поэтому папка My DocumentsProgrammingSample будет уже недоступна.

Рассматриваемые элементы управления размещаются в нижней части дизайнера формы рядом с элементом MainMenu. При работе с данными элементами прежде всего надо позаботиться о свойстве Filter, которое ограничивает список доступных файлов, фильтруя их по расширению. Свойство InitalDirectory содержит имя папки, в которой по умолчанию располагаются файлы. Если это свойство оставить пустым, то обзор файлов начнется с самой папки My Documents.

Основным методом для этих элементов является ShowDialog. После его вызова на экране отображается модальное окно, в котором пользователь должен нажать кнопку OK или Cancel. При этом метод ShowDialog возвращает значения DialogResult.OK и DialogResult.Cancel соответственно. Если получено значение DialogResult.OK, то пользователь нажал кнопку OK и в свойстве Filename содержится полный путь к выбранному файлу.

Пример работы с элементами OpenFileDialog и SaveFileDialog приведен в листинге 3.14.

Листинг 3.14

private void butOpen_Click(object sender, EventArgs e) {

 ofd.Filter = "DLL|*.dll|Картинки|*.jpg";

 ofd.InitialDirectory = "\My Documents\Templates";

 if (DialogResult.OK == ofd.ShowDialog()) {

  statusBar1.Text = ofd.FileName;

 } else {

  statusBar1.Text = "Вы нажали на кнопку Отмена!";

 }

}