Окно выбора файла C

Обновлено: 07.07.2024

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

Отображает стандартное диалоговое окно, предлагающее пользователю открыть файл. Этот класс не может быть унаследован.

Примеры

В следующем примере кода создается OpenFileDialog, задается несколько свойств для определения фильтра расширения файла и поведения диалогового окна, а также отображается диалоговое окно с помощью метода CommonDialog.ShowDialog. В примере требуется форма с размещенной на ней кнопкой и добавленной к ней ссылкой на пространство имен System.IO.

Примечания

Этот класс позволяет проверить, существует ли файл, и открыть его. Свойство ShowReadOnly определяет, отображается ли в диалоговом окне флажок только для чтения. Свойство ReadOnlyChecked указывает, установлен ли флажок только для чтения.

Большая часть основных функций этого класса находится в классе FileDialog.

В операционной системе с письмом справа налево установка для свойства RightToLeft формы-контейнера значения RightToLeft.Yes приводит к локализации диалоговых кнопок Имя файла, Открыть и Отмена. Если для свойства не задано значение RightToLeft.Yes, вместо него используется текст на английском языке.

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

Конструкторы

Инициализирует экземпляр класса OpenFileDialog.

Свойства

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

Получает или задает значение, указывающее, должен ли этот экземпляр FileDialog автоматически обновлять внешний вид и поведение при работе в Windows Vista.

Получает значение, указывающее, может ли компонент инициировать событие.

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

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

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

Эта функция недоступна, если приложение не использует стили оформления или для параметра AutoUpgradeEnabled установлено значение false .

Получает IContainer, содержащий компонент.

Получает коллекцию пользовательских мест для этого экземпляра FileDialog.

Получает или задает расширение имени файла по умолчанию.

Получает или задает значение, указывающее, возвращает ли диалоговое окно расположение файла, на который ссылается ярлык, или возвращает расположение ярлыка (.lnk).

Получает значение, указывающее, находится ли компонент в данный момент в режиме разработки.

Получает список обработчиков событий, прикрепленных к этому компоненту.

Получает или задает строку, содержащую имя файла, выбранного в диалоговом окне файла.

Получает имена всех файлов, выбранных в диалоговом окне.

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

Получает или задает индекс фильтра, выбранного в данный момент в диалоговом окне файла.

Получает или задает начальный каталог, отображаемый в диалоговом окне файла.

Получает дескриптор экземпляра Win32 для приложения.

Получает или задает значение, указывающее, позволяет ли диалоговое окно выбирать несколько файлов.

Получает значения для инициализации FileDialog.

Получает или задает значение, указывающее, установлен ли флажок только для чтения.

Получает или задает значение, указывающее, восстанавливает ли диалоговое окно каталог в ранее выбранный каталог перед закрытием.

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

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

Получает или задает значение, указывающее, отображается ли кнопка "Справка" в диалоговом окне файла.

Получает или задает значение, указывающее, содержит ли диалоговое окно флажок только для чтения.

Получает или задает ISite компонента.

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

Получает или задает объект, содержащий данные об элементе управления.

Получает или задает заголовок диалогового окна файла.

Получает или задает значение, указывающее, принимает ли диалоговое окно только допустимые имена файлов Win32.

Методы

Создает объект, содержащий всю необходимую информацию, необходимую для создания прокси-сервера, используемого для связи с удаленным объектом.

Освобождает все ресурсы, используемые Компонентом.

Освобождает неуправляемые ресурсы, используемые Компонентом, и, при необходимости, освобождает управляемые ресурсы.

Определяет, равен ли указанный объект текущему объекту.

Служит хеш-функцией по умолчанию.

Получает текущий объект службы времени жизни, который управляет политикой времени жизни для этого экземпляра.

Возвращает объект, представляющий услугу, предоставляемую Компонентом или его Контейнером.

Получает тип текущего экземпляра.

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

Получает объект службы времени жизни для управления политикой времени жизни для этого экземпляра.

Создает поверхностную копию текущего объекта.

Создает поверхностную копию текущего объекта MarshalByRefObject.

Вызывает событие FileOk.

Вызывает событие HelpRequest.

Открывает файл, выбранный пользователем, только для чтения. Файл определяется свойством FileName.

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

Сбрасывает все свойства до значений по умолчанию.

Определяет общее диалоговое окно.

Запускает обычное диалоговое окно с владельцем по умолчанию.

Запускает общее диалоговое окно с указанным владельцем.

Предоставляет строковую версию этого объекта.

События

Происходит, когда компонент удаляется вызовом метода Dispose().

Происходит, когда пользователь нажимает кнопку "Открыть" или "Сохранить" в диалоговом окне файла.

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

Для WPF вы найдете стандартные диалоговые окна для открытия и сохранения файлов в пространстве имен Microsoft.Win32. В этой статье мы сосредоточимся на классе OpenFileDialog, который позволяет очень легко отображать диалоговое окно для открытия одного или нескольких файлов.

Простой пример OpenFileDialog

Давайте начнем с использования OpenFileDialog без каких-либо дополнительных параметров, чтобы загрузить файл в элемент управления TextBox:


После того как вы нажмете кнопку «Открыть файл», диалоговое окно OpenFileDialog будет создано и показано. В зависимости от используемой версии Windows и выбранной темы это будет выглядеть примерно так:


ShowDialog() вернет логическое значение, допускающее значение null, что означает, что оно может быть либо ложным, либо истинным, либо нулевым. Если пользователь выбирает файл и нажимает «Открыть», результатом будет True, и в этом случае мы пытаемся загрузить файл в элемент управления TextBox. Мы получаем полный путь к выбранному файлу, используя свойство FileName диалогового окна OpenFileDialog.

Фильтр

Обычно, когда вы хотите, чтобы ваш пользователь открывал файл в вашем приложении, вы хотите ограничить его одним или несколькими типами файлов. Например, Word в основном открывает файлы Word (с расширением .doc или .docx), а Блокнот в основном открывает текстовые файлы (с расширением .txt).

Вы можете указать фильтр для OpenFileDialog, чтобы указать пользователю, какие типы файлов он должен открывать в вашем приложении, а также ограничить отображаемые файлы для лучшего обзора. Это делается с помощью свойства Filter, которое мы можем добавить к приведенному выше примеру сразу после инициализации диалогового окна, например так:

Вот результат:


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

Формат для указания фильтра может показаться немного странным на первый взгляд, но он работает, указав удобочитаемую версию желаемого(ых) расширения(ий) файла, а затем одну для легкого анализа компьютером, разделенную вертикальной чертой. (|) символ. Если вам нужно несколько типов файлов, как в приведенном выше примере, каждый набор информации также отделяется вертикальной чертой.

Подводя итог, следующая часть означает, что мы хотим, чтобы тип файла назывался «Текстовые файлы (*.txt)" (расширение в скобках любезно предоставлено пользователю, чтобы он знал, какие расширения включены), а во второй части диалогового окна указывается, что нужно показывать файлы с расширением .txt:

Конечно, каждый тип файла может иметь несколько расширений. Например, файлы изображений могут быть указаны как файлы JPEG и PNG, например:

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

Установка исходного каталога

Исходный каталог, используемый диалоговым окном OpenFileDialog, определяется Windows, но с помощью свойства InitialDirectory его можно переопределить. Обычно вы устанавливаете это значение на указанный пользователем каталог, каталог приложения или, возможно, только на последний использованный каталог. Вы можете указать путь в строковом формате, например:

В этом случае я получаю путь к папке «Мои документы», но взгляните на перечисление SpecialFolder — оно содержит значения для множества интересных путей. Полный список см. в этой статье MSDN.

Несколько файлов

Если ваше приложение поддерживает несколько открытых файлов или вы просто хотите использовать диалоговое окно OpenFileDialog для одновременного выбора нескольких файлов, вам необходимо включить свойство Multiselect. В следующем примере мы сделали именно это, и из любезности по отношению к вам, дорогой читатель, мы также применили все методы, упомянутые выше, включая фильтрацию и установку исходного каталога:


Если вы протестируете этот код, вы увидите, что теперь вы можете выбирать несколько файлов в одном и том же каталоге, удерживая нажатой клавишу Ctrl или Shift и щелкая мышью. После принятия в этом примере имена файлов просто добавляются в элемент управления ListBox путем перебора свойства FileNames в цикле.

Обзор

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

Вашего предпочтительного языка нет в списке? Нажмите здесь, чтобы помочь нам перевести эту статью на ваш язык!


Привет
Я новичок в C++. Я пытаюсь создать программу-редактор. Я застрял в том, как открыть диалоговое окно, в котором предлагается открыть файл из любого каталога (мои изображения и т. д.), а затем сохранить этот файл. Я попытался использовать форму для создания открытого/ сохранить диалоговое окно в режиме разработки, но когда я его компилирую, это дает мне такие ошибки, как

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

я использую визуальную студию 2013

вот этот код



Я не согласен. Начните с программ с графическим интерфейсом.

Вот как использовать обычное диалоговое окно "Открыть файл" без необходимости экспериментировать с COM-интерфейсами (просто Windows API):

Внимательно прочитайте документацию — некоторые вещи требуют особого внимания, например OFN_ALLOWMULTISELECT.

Кроме того, обратите внимание, что в моем примере в качестве типа символа используется char, но он структурирован таким образом, что вы можете легко изменить его для использования wchar_t . (Измените тип элемента filename и замените 'A' в конце функции на 'W', а строковые литералы задайте L "широкие литералы" .)


О, чуть не забыл -- вам нужно связать с comdlg32.lib. (Вы можете прочитать, что включить и с какой библиотекой связать, в нижней части страницы GetOpenFileName().)

Надеюсь, это поможет.


Похоже, вы (как и многие другие) не осознаете, что то, что вы сейчас используете, НЕ является языком программирования C++, как вы могли подумать.


@modoran
Это "управляемый C++", который выглядит и ведет себя как стандартный C++, как вам угодно.

Действительный ответ C++ также является допустимым ответом для управляемого материала/CLI MS (обычно).


Читайте также: