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


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

Обновлен: Ноябрь 2007

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

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

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

Чтобы открыть файл в виде потока с помощью компонента OpenFileDialog

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

    Можно использовать метод ShowDialog для отображения диалогового окна "Открытие файла", а экземпляр класса StreamReader использовать для открытия файла.

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

    61097ykx.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    Чтобы получить или задать свойство FileName, сборка требует уровня привилегий, предоставляемых классом System.Security.Permissions.FileIOPermission. Если процесс выполняется в контексте с частичным доверием, он может сгенерировать исключение из-за недостатка привилегий. Дополнительные сведения см. в разделе Основы управления доступом для кода.

    Пример предполагает, что в форме есть элемент управления Button и компонент OpenFileDialog.

    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
       If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
         Dim sr As New System.IO.StreamReader(OpenFileDialog1.FileName)
         MessageBox.Show(sr.ReadToEnd)
         sr.Close()
       End If
    End Sub
    
    private void button1_Click(object sender, System.EventArgs e)
    {
       if(openFileDialog1.ShowDialog() == DialogResult.OK)
       {
          System.IO.StreamReader sr = new 
             System.IO.StreamReader(openFileDialog1.FileName);
          MessageBox.Show(sr.ReadToEnd());
          sr.Close();
       }
    }
    
    private void button1_Click(Object sender, System.EventArgs e)
    {
       if(openFileDialog1.ShowDialog() == DialogResult.OK)
       {
          System.IO.StreamReader sr = new 
             System.IO.StreamReader(openFileDialog1.get_FileName());
          MessageBox.Show(sr.ReadToEnd());
          sr.Close();
       }
    }
    
    private:
       void button1_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          if(openFileDialog1->ShowDialog() == DialogResult::OK)
          {
             System::IO::StreamReader ^ sr = gcnew
                System::IO::StreamReader(openFileDialog1->FileName);
             MessageBox::Show(sr->ReadToEnd());
             sr->Close();
          }
       }
    

    (Visual C#, Visual J# и Visual C++) Добавьте в конструктор формы следующий код, чтобы зарегистрировать обработчик событий.

    this.button1.Click += new System.EventHandler(this.button1_Click);
    
    this.button1.add_Click(new System.EventHandler(this.button1_Click));
    
    this->button1->Click += gcnew
       System::EventHandler(this, &Form1::button1_Click);
    
    61097ykx.alert_note(ru-ru,VS.90).gifПримечание.

    Дополнительные сведения о чтении из файловых потоков можно найти в разделах Метод FileStream.BeginRead Method и Метод FileStream.Read.

Чтобы открыть файл в виде файла с помощью компонента OpenFileDialog

  • Используйте метод ShowDialog для отображения диалогового окна и метода OpenFile для открытия файла.

    Метод OpenFileDialog компонента OpenFile возвращает байты, по которым собирается файл. Эти байты образуют поток для считывания. В примере, представленном ниже, создается экземпляр компонента OpenFileDialog с фильтром по "курсору". Таким образом, пользователь сможет выбирать только файлы с расширением .cur Если выбрать файл .cur , курсор формы помещается на выбранный курсор.

    61097ykx.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    Чтобы вызвать метод System.Security.Permissions.FileIOPermission, сборка требует уровня прав доступа, предоставляемых классом OpenFile. Если процесс выполняется в контексте с частичным доверием, он может сгенерировать исключение из-за недостатка привилегий. Дополнительные сведения см. в разделе Основы управления доступом для кода.

    В примере предполагается, что в форме существует элемент управления Button.

    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
       ' Displays an OpenFileDialog so the user can select a Cursor.
       Dim openFileDialog1 As New OpenFileDialog()
       openFileDialog1.Filter = "Cursor Files|*.cur"
       openFileDialog1.Title = "Select a Cursor File"
    
       ' Show the Dialog.
       ' If the user clicked OK in the dialog and 
       ' a .CUR file was selected, open it.
       If openFileDialog1.ShowDialog() = DialogResult.OK Then
         ' Assign the cursor in the Stream to the Form's Cursor property.
         Me.Cursor = New Cursor(openFileDialog1.OpenFile())
       End If
    End Sub
    
    private void button1_Click(object sender, System.EventArgs e)
    {
       // Displays an OpenFileDialog so the user can select a Cursor.
       OpenFileDialog openFileDialog1 = new OpenFileDialog();
       openFileDialog1.Filter = "Cursor Files|*.cur";
       openFileDialog1.Title = "Select a Cursor File";
    
       // Show the Dialog.
       // If the user clicked OK in the dialog and
       // a .CUR file was selected, open it.
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
       {
          // Assign the cursor in the Stream to the Form's Cursor property.
          this.Cursor = new Cursor(openFileDialog1.OpenFile());
       }
    }
    
    private void button1_Click(Object sender, System.EventArgs e)
    {
       // Displays an OpenFileDialog so the user can select a Cursor.
       OpenFileDialog openFileDialog1 = new OpenFileDialog();
       openFileDialog1.set_Filter("Cursor Files|*.cur");
       openFileDialog1.set_Title("Select a Cursor File");
    
       // Show the Dialog.
       // If the user clicked OK in the dialog and
       // a .CUR file was selected, open it.
       if (openFileDialog1.ShowDialog() == DialogResult.OK)
       {
          // Assign the cursor in the Stream to the Form's Cursor property.
          this.set_Cursor(new Cursor(openFileDialog1.OpenFile()));
       }
    }
    
    private:
       void button1_Click(System::Object ^ sender,
          System::EventArgs ^ e)
       {
          // Displays an OpenFileDialog so the user can select a Cursor.
          OpenFileDialog ^ openFileDialog1 = new OpenFileDialog();
          openFileDialog1->Filter = "Cursor Files|*.cur";
          openFileDialog1->Title = "Select a Cursor File";
    
          // Show the Dialog.
          // If the user clicked OK in the dialog and
          // a .CUR file was selected, open it.
          if (openFileDialog1->ShowDialog() == DialogResult::OK)
          {
             // Assign the cursor in the Stream to
             // the Form's Cursor property.
             this->Cursor = gcnew
                System::Windows::Forms::Cursor(
                openFileDialog1->OpenFile());
          }
       }
    

    (Visual C#, Visual J# и Visual C++) Добавьте в конструктор формы следующий код, чтобы зарегистрировать обработчик событий.

    this.button1.Click += new System.EventHandler(this.button1_Click);
    
    this.button1.add_Click(new System.EventHandler(this.button1_Click));
    
    this->button1->Click += gcnew
       System::EventHandler(this, &Form1::button1_Click);
    

См. также

Ссылки

OpenFileDialog

Другие ресурсы

Компонент OpenFileDialog (Windows Forms)