Раздел 2 Основы работы с файлами и директориями в C#

C#: OpenFileDialog — окно выбора файла

В данной заметке я решил кратко, а главное наглядно продемонстрировать пример создания окна для выбора файла.

Сразу оговорюсь, что если Вас интересует окно для выбора директории, то Вам нужно смотреть данную заметку.
По сравнению с окном для выбора папок, форма для выбора файлов более богата настройками. Однако в целом принцип работы класса OpenFileDialog не отличается от класса FolderBrowserDialog. Создадим новую форму и перейдем к ее коду. Там уже будет создан конструктор нашей формы, именно там мы и будем вызывать наше окно, для выбора файла.

Пример уже вполне рабочий, однако использовать данный класс так не стоит. Главная причина этому — форма показывает нам абсолютно все файлы. В жизни такое бывает редко, поэтому давайте ограничим отображение только файлами txt и cs. Для этого нам понадобиться свойство Filter.

Фильтр задается через разделитель по следующему принципу: «ОписаниеТипаФайла|МаскаПоискаФайла[|…]». Таким образом в нашем примере в качестве описания выступают фразы «Файлы txt» и «Файлы cs», а в качества масок «*.txt» и «*.cs» — что соответствует любым файлам с расширением txt и cs. Так же мы можем явно задать имя файла, который нам нужно выбрать.

Так же мы можем разрешить пользователю выбор нескольких файлов сразу, для этого необходимо поставить свойство Multiselect = true. Однако тогда, для полечения всех имен выбранных файлов необходимо будет использовать массив FileNames вместо свойства FileName.

В целом если покопаться в свойствах класса OpenFileDialog можно найти еще несколько забавных свойств, однако основные из них, я описал выше.

Параграф 1 Ипользование контрола OpenFileDialog

Основные свойства OpenFileDialog

Свойство AddExtension разрешает или запрещает автоматическое добавление расширение, указанное в свойстве DefaultExt.

Свойство DefaultExt — расширение, принятое по умолчанию для автоматического добавления к имени файла при AddExtension=true.

Свойство CheckFileExists — используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла, которого не существует в данной директории и нажал кнопку «Oткрыть» при невыбранном кликом мышки файле. При CheckFileExists=true вместо прерывания будет выдано сообщение, что такого файла нет и исключения не вызывается.

На Рис.2 показано окно предупреждение при FileName=a.doc, CheckFileExists=true и нажатии кнопки «Oткрыть» при невыбранном файле.

Рис.2 Окно предупреждения при CheckFileExists=true

Свойство FileName — имя файла по умолчанию для выборки если была нажата кнопка OK и не выбрн кликом мышки файл в окне диалога.

Свойство CheckPatchExists — используется для получения или устанавки значения, указывающего отображать или нет диалоговое окно предупреждения, если пользователь указал в свойстве FileName имя файла с несуществующим именем директории. Окно полностью анлогично показанному на Рис.2., например, при FileName=С:3a.doc и не выбранном файле в директории C: и нажатии кнопки «Oткрыть» будет выдано сообщение, поазанное на Рис.3. При CheckPatchExists=true вместо прерывания будет выдано только сообщение.

Рис.3 Окно предупреждения при CheckPatchExists=true

Свойство DereferenceLinks — используется для указания контролу что именно возвращпть при выборе файла ссылки — файл по ссылке (true) или файл самой сылки (false).

Свойства Filter, FilterIndex — фильтр для выбираемых файлов и индекс строки, отображаемой в окошечке «Имя файла». Например значение свойства заданного строкой при FilterIndex=1.

позволит выбрать только текстовые файлы в формате rtf или txt. В окошечке «Тип файла» будет только две строки:

а в окошечке «Имя файла» будет отображена первая.

Свойство InitialDirectory — директория, которая выбирается при старте OpenFileDialog.

Свойство MultiSelect — при значении true позволяет выбрать мышкой при нажатой кнопке Shift или Ctrl несколько файлов и сохранить их имена в свойстве FileNames в виде массива строк.

Свойство ReadOnlyChecked — при значении true позволяет открывать команде OpenFile выбранные файлы только в режиме чтения.

Свойство RestoreDirectory — при true диалоговое окно восстанавливает текущий каталог к первоначальному значению если пользователь изменил каталог при поиске файлов, при false — нет.

Свойство работает только если закрыт поток Stream, созданный методом openFileDialog1.OpenFile().

Свойство ShowHelp — при значении true в окне диалога отображается кнопка «Справка».

Свойство ShowReadOnly — при значении true в окне диалога отображается переключатель «Только для чтения».

Свойство Title — заголовок диалогового окна.

Свойство ValidateNames — при true проверяет допустимость имени для файла применительно к Win32. Никакое заданное по умолчанию в этом случае не добавляется.

Отметим, что ве свойcтва могут быть заданы на этапе проектирования и программно — путем присвоения соответствующих значений.

Загрузка содержимого файла с использованием OpenFileDialog

Filter — rtf файлы (*.rtf)|*.rtf

Пометим в директорию C: какой либо файл в формате .rtf (например который был создан в первом разделе «a.tf») и загрузим его в RichTextBox. Для этого напишем в обработчике нажатия кнопки 1 следующий код:

Ели мы выбрали файл C:a.rtf, то это имя отобразится в заглавии формы.

Если теперь в войстве FileName запишем a.rtf, то при открытии диалога буковка «a» появляется в окошечке «Имя файла» и можно выполнить загрузку не выбирая мышкой файл, а сразу нажав кнопочку «OK».

Дотаточно в войстве FileName записать a.doc и повторить то, что только что проделали выше, как получим предупреждение об отсутствии файла (см Рис.2) и файл уже придется выбирать кликом мышки (кстати, отетим еще раз, что если утановить войство CheckFileExists в false то получим возбуждение иключения).

Рассмотрим еще один способ, который позволяет загружать фйлы в формате .txt. Добавим на форму контрол TextBox и установим его свойство MultiLine в true, в обработчике Form1_Load допишем строку

а cвойству Filter присвоим значение

В обработчике события нажатия кнопки 1 напишем код для чтения текстовых файлов.

Ели прочитаем текстовый файл в формате .rtf, то увидим уже знакомое нам по первому разделу содержимое файла, а при чтении текстового файла в формате .txt именно текст (см Рис.4).

Рис.4 Чтение файлов в формате .rtf(сле) и.txt(спрва) в ткстовом режиме


Как выбрать несколько последовательных файлов

Если вам нужно выбрать диапазон файлов, то кликните на первом из них, а затем удерживая кнопку Shift кликните на последнем в диапазоне, который вы хотите выбрать.

С помощью курсорных клавиш выберите первый файл. Если курсор находится в другой панели, то используйте клавишу Tab чтобы переключиться в панель с файлами.

Перейдите на первый файл, который вы хотите выбрать.

Нажмите кнопку Shift.

Не отпуская Shift двигайте курсорные клавиши до конца списка файлов, который вы хотите выбрать.

Когда достигните нужного файла, отпустите кнопку Shift.

Диалог выбора файла в 1С

В обычном приложение необходимо добавить на форму элемент «Поле ввода» и установить галочку напротив свойства «КнопкаВыбора». В событии «НачалоВыбора» прописать функцию, которая будет предоставлять выбор
файла. Функцию добавить в модуль формы.

В управляемом приложении сначала необходимо создать реквизит формы. Затем для этого реквизита на форму надо добавить элемент «Поле» и установить для свойства «КнопкаВыбора» значение «Да». И так же как в обычном приложении, в событии «НачалоВыбора», прописать функцию. Функция будет расположена в модуле
формы. В отличии от обычного приложения перед функцией надо прописать &НаКлиенте.

  • Заголовок — заголовок окна выбора фйлов
  • ИндексФильтра — индекс активного фильтра
  • Каталог — текущий каталог выбора файла
  • МножественныйВыбор — задаёт возможность выбора нескольких файлов
  • ПолноеИмяФайла — имя выбранного файла
  • ПредварительныйПросмотр — отображение окна предварительного просмотра содержимого файла
  • ПроверятьСуществованиеФайла — определяет проверять существование файла
  • Расширение — расширения для записи файлов
  • Режим — РежимДиалогаВыбораФайла.(ВыборКаталога, Открытие, Сохранение)
  • Фильтр — строка с файловыми фильтрами

Что делать, если «Открыть с помощью» отсутствует в контекстном меню

Некоторые пользователи Windows 10 сталкиваются с тем, что пункта «Открыть с помощью» нет в контекстном меню. Если у вас возникла проблема, исправить ее можно с помощью редактора реестра:

Исправление меню открыть с помощью в Windows 10

  1. Откройте редактор реестра (Win+R, ввести regedit).
  2. Перейдите к разделу HKEY_CLASSES_ROOT * shellex ContextMenuHandlers
  3. В этом разделе создайте подраздел с именем «Open With».
  4. Дважды кликните по строковому значению по умолчанию внутри созданного раздела и введите в поле «Значение».

Нажмите Ок и закройте редактор реестра — пункт «Открыть с помощью» должен появиться там, где ему положено быть.

На этом всё, надеюсь, всё работает так, как ожидается и требуется. Если же нет или есть дополнительные вопросы на тему — оставляйте комментарии, буду стараться ответить.

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector