Практическое руководство. Открытие файлов с помощью компонента OpenFileDialog
Обновлен: Ноябрь 2007
Компонент OpenFileDialog позволяет пользователям просматривать папки личного компьютера или любого компьютера в сети, а также выбирать файлы, которые требуется открыть. Диалоговое окно возвращает путь и имя файла, который был выбран пользователем.
После того, как пользователь выбирает файл, который требуется открыть, существует два подхода к открытию файла. Если разработчик предпочитает работать с потоками файлов, можно создать экземпляр класса StreamReader. С другой стороны, для открытия выбранного файла можно использовать метод OpenFile.
В первом примере, представленном ниже, используется проверка разрешения FileIOPermission (согласно описанию в примечании о безопасности ниже), но обеспечивается доступ к имени файла. Можно использовать этот способ в зонах "Локальный компьютер", "Интрасеть" и "Интернет". Во втором методе также проводится проверка разрешения FileIOPermission, однако этот метод больше подходит для приложений в зонах "Интрасеть" или "Интернет".
Чтобы открыть файл в виде потока с помощью компонента OpenFileDialog
Отобразите диалоговое окно Открытие файла и вызовите метод, чтобы открыть файл, выбранный пользователем.
Можно использовать метод ShowDialog для отображения диалогового окна "Открытие файла", а экземпляр класса StreamReader использовать для открытия файла.
В приведенном ниже используется обработчик событий Click элемента управления Button для открытия экземпляра компонента OpenFileDialog. Когда файл выбран и пользователь нажимает кнопку ОК, файл, выбранный в диалоговом окне, открывается. В этом случае отображается содержимое окна сообщения, чтобы показать, что поток файла прочитан.
Примечание о безопасности. Чтобы получить или задать свойство 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);
Примечание. Дополнительные сведения о чтении из файловых потоков можно найти в разделах Метод FileStream.BeginRead Method и Метод FileStream.Read.
Чтобы открыть файл в виде файла с помощью компонента OpenFileDialog
Используйте метод ShowDialog для отображения диалогового окна и метода OpenFile для открытия файла.
Метод OpenFileDialog компонента OpenFile возвращает байты, по которым собирается файл. Эти байты образуют поток для считывания. В примере, представленном ниже, создается экземпляр компонента OpenFileDialog с фильтром по "курсору". Таким образом, пользователь сможет выбирать только файлы с расширением .cur Если выбрать файл .cur , курсор формы помещается на выбранный курсор.
Примечание о безопасности. Чтобы вызвать метод 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);