Поделиться через


FileDialog Класс

Определение

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

public ref class FileDialog abstract : System::Windows::Forms::CommonDialog
public abstract class FileDialog : System.Windows.Forms.CommonDialog
type FileDialog = class
    inherit CommonDialog
Public MustInherit Class FileDialog
Inherits CommonDialog
Наследование
Производный

Примеры

В следующем примере кода используется OpenFileDialog реализация FileDialog иллюстрирует создание, задание свойств и отображение диалогового окна. В примере используется ShowDialog метод для отображения диалогового окна и возврата DialogResult. В примере требуется форма с помещенной на ней ButtonSystem.IO и пространство имен, добавленное в него.

private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      Stream^ myStream;
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

      openFileDialog1->InitialDirectory = "c:\\";
      openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      openFileDialog1->FilterIndex = 2;
      openFileDialog1->RestoreDirectory = true;

      if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
var fileContent = string.Empty;
var filePath = string.Empty;

using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.InitialDirectory = "c:\\";
    openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog.FilterIndex = 2;
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        //Get the path of specified file
        filePath = openFileDialog.FileName;

        //Read the contents of the file into a stream
        var fileStream = openFileDialog.OpenFile();

        using (StreamReader reader = new StreamReader(fileStream))
        {
            fileContent = reader.ReadToEnd();
        }
    }
}

MessageBox.Show(fileContent, "File Content at path: " + filePath, MessageBoxButtons.OK);
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim myStream As Stream = Nothing
    Dim openFileDialog1 As New OpenFileDialog()

    openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True

    If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                ' Insert code to read the stream here.
            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open.
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub

Комментарии

FileDialog является абстрактным классом, который содержит общее поведение для OpenFileDialog и SaveFileDialog классов. Он не предназначен для непосредственного использования, но содержит общее поведение для этих двух классов. Невозможно создать экземпляр FileDialog. Хотя класс объявлен общедоступным, вы не можете наследовать от него, так как он содержит внутренние абстрактные методы. Чтобы создать диалоговое окно для выбора или сохранения файла, используйте OpenFileDialog или SaveFileDialog.

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

Предостережение

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

Если вы хотите разрешить пользователям выбирать папку вместо файла, используйте этот параметр FolderBrowserDialog.

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

Путь или категория программы Класс и члены для использования
Стандартные пути Windows, такие как Program Files, MyDocuments, Desktop и т. д. Класс System.Environment является самым полным источником для этих методов либо через статические методы, например SystemDirectoryGetFolderPath через метод, используя одно из Environment.SpecialFolder перечисленных значений.
Пути, связанные с текущим приложением Класс Application имеет статические члены для получения определенных путей, таких как StartupPath, ExecutablePathи CommonAppDataPathLocalUserAppDataPath.

Метод System.IO.Path возвращает GetTempPath путь к временной папке.

Метод GetCurrentDirectorySystem.IO.Directory класса возвращает текущий исполняемый каталог приложения.

Свойство RootDirectoryDriveInfo класса представляет корневой каталог указанного диска.
Пути, хранящиеся в качестве параметров приложения Доступ к соответствующему свойству параметров приложений класса оболочки, производным от ApplicationSettingsBase. Дополнительные сведения см. в разделе "Параметры приложения" для Windows Forms.
Хранилище реестра Некоторые приложения хранят сведения о каталоге в реестре. Класс Application имеет CommonAppDataPath свойства, LocalUserAppDataPath которые разрешаются в RegistryKey значение.
Приложения ClickOnce Для приложений ClickOnce используйте Application такие члены класса, как UserAppDataPath, которые возвращают указатель на каталог данных ClickOnce. Дополнительные сведения см. в разделе "Доступ к локальным и удаленным данным" в приложениях ClickOnce.
Международные приложения Для международных приложений извлеките относительную часть пути из строкового ресурса в приложении с помощью System.Resources.ResourceReader класса. Дополнительные сведения о глобализации и локализации см. в разделе "Глобализация и локализация".

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

Класс System.IO.Path содержит статические члены для управления абсолютными и относительными строками пути, а System.IO.FileSystem.IO.Directory классы имеют статические элементы, которые фактически управляют файлами и каталогами соответственно.

Это важно

Если пользователь приложения изменяет папку в FileDialogпапке, то текущий рабочий каталог для приложения устанавливается в расположение, указанное в файле FileDialog. Чтобы предотвратить это, задайте RestoreDirectory для свойства значение true.

Поля

Имя Описание
EventFileOk

Владеет событием FileOk .

Свойства

Имя Описание
AddExtension

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

AddToRecent

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

AutoUpgradeEnabled

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

CanRaiseEvents

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

(Унаследовано от Component)
CheckFileExists

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

CheckPathExists

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

ClientGuid

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

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

Container

Возвращает объект IContainer , содержащий Componentобъект .

(Унаследовано от Component)
CustomPlaces

Возвращает коллекцию настраиваемых мест для этого FileDialog экземпляра.

DefaultExt

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

DereferenceLinks

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

DesignMode

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

(Унаследовано от Component)
Events

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

(Унаследовано от Component)
FileName

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

FileNames

Возвращает имена файлов всех выбранных файлов в диалоговом окне.

Filter

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

FilterIndex

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

InitialDirectory

Возвращает или задает исходный каталог, отображаемый диалоговым окном файла.

Instance

Возвращает дескриптор экземпляра Win32 для приложения.

OkRequiresInteraction

Возвращает или задает значение, указывающее, отключена ли кнопка "ОК" диалогового окна, пока пользователь не перейдет в представление или изменит имя файла (если применимо).

Options

Возвращает значения для инициализации FileDialog.

RestoreDirectory

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

ShowHelp

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

ShowHiddenFiles

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

ShowPinnedPlaces

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

Site

Возвращает или задает ISite объект Component.

(Унаследовано от Component)
SupportMultiDottedExtensions

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

Tag

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

(Унаследовано от CommonDialog)
Title

Возвращает или задает заголовок диалогового окна файла.

ValidateNames

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

Методы

Имя Описание
CreateObjRef(Type)

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

(Унаследовано от MarshalByRefObject)
Dispose()

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

(Унаследовано от Component)
Dispose(Boolean)

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

(Унаследовано от Component)
Equals(Object)

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

(Унаследовано от Object)
GetHashCode()

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

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

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

(Унаследовано от MarshalByRefObject)
GetService(Type)

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

(Унаследовано от Component)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
HookProc(IntPtr, Int32, IntPtr, IntPtr)

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

InitializeLifetimeService()
Устаревшие..

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

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
OnFileOk(CancelEventArgs)

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

OnHelpRequest(EventArgs)

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

(Унаследовано от CommonDialog)
OwnerWndProc(IntPtr, Int32, IntPtr, IntPtr)

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

(Унаследовано от CommonDialog)
Reset()

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

RunDialog(IntPtr)

Задает общее диалоговое окно.

ShowDialog()

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

(Унаследовано от CommonDialog)
ShowDialog(IWin32Window)

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

(Унаследовано от CommonDialog)
ToString()

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

События

Имя Описание
Disposed

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

(Унаследовано от Component)
FileOk

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

HelpRequest

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

(Унаследовано от CommonDialog)

Применяется к

См. также раздел