Выбор файла c windows forms

Последнее обновление: 31.10.2015

Окна открытия и сохранения файла представлены классами OpenFileDialog и SaveFileDialog.
Они имеют во многом схожую функциональность, поэтому рассмотрим их вместе.

OpenFileDialog и SaveFileDialog имеют ряд общих свойств, среди которых можно выделить следующие:

  • DefaultExt: устанавливает расширение файла, которое добавляется по умолчанию, если пользователь ввел имя файла без расширения

  • AddExtension: при значении true добавляет к имени файла расширение при его отсуствии. Расширение берется из
    свойства DefaultExt или Filter

  • CheckFileExists: если имеет значение true, то проверяет существование файла с указанным именем

  • CheckPathExists: если имеет значение true, то проверяет существование пути к файлу с указанным именем

  • FileName: возвращает полное имя файла, выбранного в диалоговом окне

  • Filter: задает фильтр файлов, благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате
    Название_файлов|*.расширение. Например, Текстовые файлы(*.txt)|*.txt. Можно задать сразу несколько фильтров, для этого они разделяются
    вертикальной линией |. Например, Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg

  • InitialDirectory: устанавливает каталог, который отображается при первом вызове окна

  • Title: заголовок диалогового окна

Отдельно у класса SaveFileDialog можно еще выделить пару свойств:

  • CreatePrompt: при значении true в случае, если указан не существующий файл, то будет отображаться сообщение о его создании

  • OverwritePrompt: при значении true в случае, если указан существующий файл, то будет отображаться сообщение о том, что файл будет перезаписан

Чтобы отобразить диалоговое окно, надо вызвать метод ShowDialog().

Рассмотрим оба диалоговых окна на примере. Добавим на форму текстовое поле textBox1 и две кнопки button1 и button2. Также перетащим с панели инструментов
компоненты OpenFileDialog и SaveFileDialog. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:

OpenFileDialog и SaveFileDialog в Windows Forms

Теперь изменим код формы:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        button1.Click += button1_Click;
        button2.Click += button2_Click;
        openFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";
        saveFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*";
    }
    // сохранение файла
    void button2_Click(object sender, EventArgs e)
    {
        if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
            return;
        // получаем выбранный файл
        string filename = saveFileDialog1.FileName;
        // сохраняем текст в файл
        System.IO.File.WriteAllText(filename, textBox1.Text);
        MessageBox.Show("Файл сохранен");
    }
    // открытие файла
    void button1_Click(object sender, EventArgs e)
    {
        if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
            return;
        // получаем выбранный файл
        string filename = openFileDialog1.FileName;
        // читаем файл в строку
        string fileText = System.IO.File.ReadAllText(filename);
        textBox1.Text = fileText;
        MessageBox.Show("Файл открыт");
    }
}

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

4 Answers

These links explain it with examples

http://dotnetperls.com/openfiledialog

http://www.geekpedia.com/tutorial67_Using-OpenFileDialog-to-open-files.html

private void button1_Click(object sender, EventArgs e)
{
    int size = -1;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
    if (result == DialogResult.OK) // Test result.
    {
       string file = openFileDialog1.FileName;
       try
       {
          string text = File.ReadAllText(file);
          size = text.Length;
       }
       catch (IOException)
       {
       }
    }
    Console.WriteLine(size); // <-- Shows file size in debugging mode.
    Console.WriteLine(result); // <-- For debugging use.
}

Seupa-Tee's user avatar

answered Feb 15, 2011 at 4:00

Divi's user avatar

DiviDivi

7,63113 gold badges47 silver badges63 bronze badges

0

var FD = new System.Windows.Forms.OpenFileDialog();
if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
    string fileToOpen = FD.FileName;

    System.IO.FileInfo File = new System.IO.FileInfo(FD.FileName);

    //OR

    System.IO.StreamReader reader = new System.IO.StreamReader(fileToOpen);
    //etc
}

Cody Gray - on strike's user avatar

answered Feb 15, 2011 at 3:59

Adam Rackis's user avatar

Adam RackisAdam Rackis

82.2k57 gold badges272 silver badges396 bronze badges

0

OpenFileDialog fdlg = new OpenFileDialog();
fdlg.Title = "C# Corner Open File Dialog" ;
fdlg.InitialDirectory = @"c:\" ;
fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*" ;
fdlg.FilterIndex = 2 ;
fdlg.RestoreDirectory = true ;
if(fdlg.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fdlg.FileName ;
}

In this code you can put your address in a text box.

Josh R's user avatar

Josh R

1051 silver badge6 bronze badges

answered Jul 25, 2014 at 7:57

alireza0000's user avatar

alireza0000alireza0000

3513 silver badges3 bronze badges

1

  • Upvote for the inclusion of the «Filter»!

    Aug 9 at 13:50

        int size = -1;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.InitialDirectory = @"YOUR FILE PATH";  
        DialogResult result = openFileDialog1.ShowDialog(); 
        // Show the dialog.
        openFileDialog1.RestoreDirectory = true;
        openFileDialog1.Title = "BROWSE TEXT BLT";
        openFileDialog1.FilterIndex = 2;
        openFileDialog1.CheckFileExists = true;
        openFileDialog1.CheckPathExists = true;
        if (result == DialogResult.OK) // Test result.
        {
            string file = openFileDialog1.FileName;
            try
            {
                string text = System.IO.File.ReadAllText(file);
                size = text.Length;
            }
            catch (System.IO.IOException ex)
            {
                throw ex;
            }
            TXT_FOLDER_PATH.Text = file;
         }

answered Sep 24, 2022 at 11:09

Prince Prajapati's user avatar

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

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

public Form1()
        {
            InitializeComponent();
            OpenFileDialog OPF = new OpenFileDialog();
            if (OPF.ShowDialog() == DialogResult.OK)
            {
                MessageBox.Show(OPF.FileName);
            }
        }

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

OPF.Filter = "Файлы txt|*.txt|Файлы cs|*.cs";

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

OPF.Filter = "Файлы txt|*.txt|Файлы cs|Form1.cs";

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

public Form1()
        {
            InitializeComponent();
            OpenFileDialog OPF = new OpenFileDialog();
            OPF.Multiselect = true; 
            if (OPF.ShowDialog() == DialogResult.OK)
            {
                foreach (string file in OPF.FileNames)
                {
                    MessageBox.Show(file);
                }
            }
        }

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

0 / 0 / 0

Регистрация: 25.11.2012

Сообщений: 16

1

Какими средствами реализовать выбор файла для открытия или сохранения

28.11.2012, 18:04. Показов 5032. Ответов 2


Студворк — интернет-сервис помощи студентам

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



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

28.11.2012, 18:04

Ответы с готовыми решениями:

Как в QML сдлать так, чтобы FileDialog задавал путь для сохранения файла, а не для открытия?
если я делаю так, то открывается диалог на открытие файла. А в документации не нашла что нужно…

Какими средствами можно реализовать прайс-лист оборудования
Добрый день!
Скажите, пожалуйста, какими средствами MS Office можно решить мою задачу?
Есть…

Выбор файла для открытия
Здравствуйте. Подскажите, пожалуйста, как на Android (java) можно организовать выбор файла в…

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

2

Не осилил Linux

267 / 61 / 6

Регистрация: 06.08.2009

Сообщений: 223

28.11.2012, 18:11

2

гугли OpenFileDialog, SaveFileDialog, BrowserFolderDialog



0



Ninochka

3 / 3 / 1

Регистрация: 12.05.2010

Сообщений: 27

29.11.2012, 13:57

3

Лучший ответ Сообщение было отмечено Анастасия_18 как решение

Решение

Открыть файл источник:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private void button1_Click(object sender, System.EventArgs e)
{
    Stream myStream = null;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
 
    openFileDialog1.InitialDirectory = "c:\\" ;
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
    openFileDialog1.FilterIndex = 2 ;
    openFileDialog1.RestoreDirectory = true ;
 
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
        try
        {
            if ((myStream = openFileDialog1.OpenFile()) != null)
            {
                using (myStream)
                {
                    // Insert code to read the stream here.
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
        }
    }
}

Сохранить файл источник:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void button1_Click(object sender, System.EventArgs e)
 {
     Stream myStream ;
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
     saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"  ;
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;
 
     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
             // Code to write the stream goes here.
             myStream.Close();
         }
     }
 }



0



I wanted to create a form element that looks like this.

File Chooser Demo

The solution was such that when users click «Browse», a open file dialog will show up to allow them to choose a file for my program to process. In this post, I shall discuss how I had implemented this solution.

Elements on the windows form

The classes needed for this solution are as follows:

  • System.Windows.Forms.Label
  • System.Windows.Forms.TextBox
  • System.Windows.Forms.Button
  • System.Windows.Forms.OpenFileDialog dialog

Except for OpenFileDialog, all of the above components will have their visuals on the windows form:

File Chooser Demo Designer View

Implementing the logic to show the file dialog when users click «Browse»

Double-click on the «Browse» button in the Designer to generate a function and associate it with the Button.Click event. In the generated code, include the codes to show the OpenFileDialog:

// Event handler for browseButton
private void browseButton_Click(object sender, EventArgs e)
{
    // Show the dialog that allows user to select a file, the 
    // call will result a value from the DialogResult enum
    // when the dialog is dismissed.
    DialogResult result = this.openFileDialog.ShowDialog();
    // if a file is selected
    if (result == DialogResult.OK)
    {
        // Set the selected file URL to the textbox
        this.fileURLTextBox.Text = this.openFileDialog.FileName;
    }
}

With that, we are able to get the file URL that users have selected from the text box. Alternatively, if we are just going to process a file, we could have just call our backend code from within the if statement. However, for my case, I will want to get more user input before I process the file, that was why I had set the file URL to the text box. This will allow my program to get the file URL of the selected file when users had submitted more input.

Other configurations

Set the TextBox as readonly

Similar to a file upload html element, I will only allow my users to see which file that they have selected. By setting the ReadOnly property of the TextBox instance to true, users can click on the file URL text to verify their selection but not able to change the contents with their keyboards.

Set the file filter for the OpenFileDialog

By default, the OpenFileDialog allows users to select any files that they want. However, in my application, I only want them to select .txt files. By setting the Filter property of the OpenFileDialog instance, I can configure the OpenFileDialog to only display the type of files I want my users to select. The easiest way is to do so in the designer:

About Clivant

Clivant a.k.a Chai Heng enjoys composing software and building systems to serve people. He owns techcoil.com and hopes that whatever he had written and built so far had benefited people. All views expressed belongs to him and are not representative of the company that he works/worked for.

  • Вывод из домена windows 10
  • Выборочный запуск windows 10 не отключается
  • Выбор аудиодорожки в windows media
  • Вывести linux из домена windows
  • Выборочный запуск windows 10 как отключить