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. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:

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

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("Файл открыт");
    }
}

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

Лабораторные работы си шарп. Работа с файлами

Приложения для Windows forms

Лабораторная работа 15

Выполнить: Разработайте приложение, которое сохраняет в файл информацию из списка (ListBox) и загружает из файла информацию обратно в список.

Пример выполнения:

Работа с файлами в C#

[Название проекта: Lesson_15Lab1, название файла L15Lab1.cs]

✍ Выполнение:

  1. Поместите на форму элементы: список ListBox (lst), ListBox (lstFromfile) текстовое поле TextBox (txt), кнопки: btnAdd («Добавить элемент в список»), btnSave («Сохранить в файле»), btnOpen («Загрузить из файла»). Расположите правильно элементы (рисунок).
  2. Добавьте пространство имен для работы с файлами:
  3. При нажатии на btnAdd («Добавить элемент в список») в список lst должна добавиться строка, записанная в текстовое окно txt, а само окно при этом должно очиститься. Добавьте код для события click кнопки btnAdd:
  4. 1
    2
    3
    4
    5
    
    private void btnAdd_Click(object sender, EventArgs e)
            {
                lst.Items.Add(txt.Text);
                txt.Clear();
            }
  5. По щелчку на кнопке btnSave вся информация со списка должна добавляться во введенный пользователем в текстовое окно текстовый файл. Для этого добавьте процедуру для события Click кнопки:
  6. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    private void btnSave_Click(object sender, EventArgs e)
            {
                string fileName = txtFileName.Text; // путь к файлу
                if (File.Exists(fileName)) 
                {
                    File.Delete(fileName); // если файл существует - удаляем его
                }
                using (FileStream fs = File.Create(fileName, 1024)) // класс для работы с файлами
    // класс для работы с данными файла в двоичной виде
                using(BinaryWriter bw = new BinaryWriter(fs)) 
                {
                    for (var i = 0; i < lst.Items.Count; i++) // пока не конец списка
                    {
                        bw.Write(lst.Items[i].ToString()); // записываем в файл каждый пункт
     
                    }
                    bw.Close();
                    fs.Close();
                }
              }
  7. Событие Click кнопки btnOpen («Загрузить из файла») запрограммируйте таким образом, чтобы в список помещались все строки из файла:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void btnOpen_Click(object sender, EventArgs e)
        {
            string fileName = txtFileName.Text;
            lstFromfile.Items.Clear();
            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            using (BinaryReader br = new BinaryReader(fs))
            {
             // метод PeekChar() возвращает следующий прочитанный символ
             // если символов нет - возвращается -1
                while (br.PeekChar() != -1) 
                {
                    // добавляем в список очередную прочитанную строку
                    lstFromfile.Items.Add(br.ReadString()); 
                }
                br.Close();
                fs.Close();
            }
        }
  1. Запустите приложение, внесите в список lst несколько строк и попытайтесь сохранить их в файл (желательно с расширением .txt: например, proba.txt). Если не написан путь к файлу, то файл сохранится в папке /bin/Debug Вашего проекта.

Опция сохранения на компьютере распространена повсюду. Бывает что создавая приложение необходимо, чтобы оно обладало данной функцией.
Создание приложения на C# и Windows Form при использовании Visual Studio достаточно простая задача. (ссылка) Но что если нам понадобится вызвать из приложения окно сохранения. И в сегодняшней статье мы создадим простое приложение Windows Form, рассмотрим как записать данные в файл и в конце добавим окно сохранения.

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

Результат:

Название на кнопке изменено в окне свойств. Правая кнопка > свойства. Находим поле текст.

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


        private void button1_Click(object sender, EventArgs e)
        {
            string text = richTextBox1.Text;
            MessageBox.Show(text);
        }

Для открытия окна сохранения используем класс SaveFileDialog.

        private void button1_Click(object sender, EventArgs e)
        {
            string text = richTextBox1.Text;
            MessageBox.Show(text);
            SaveFileDialog open = new SaveFileDialog();

            
            // открываем окно сохранения
            open.ShowDialog();

            
            // присваниваем строке путь из открытого нами окна
            string path = open.FileName;

                
                try{
                // создаем файл используя конструкцию using

                
                using(FileStream fs = File.Create(path))
                {

                
                   // создаем переменную типа массива байтов
                   // и присваиваем ей метод перевода текста в байты
                   byte[] info = new UTF8Encoding(true).GetBytes(text);
                   // производим запись байтов в файл
                   fs.Write(info, 0, info.Length);

                   
            
                }
               }
          catch (Exception ex) 
            {
                Console.WriteLine(ex.ToString());

            
            }

                
        }

В данном коде используется конструкция using, для безопасного открытия потока на запись с последующим его закрытием. Данная конструкция автоматизирует освобождение ресурсов памяти.
Таким образом мы создали, простое оконное приложение Windows Form на C#, с функцией записи в файл и его сохранением.

  • Создано 07.04.2022 10:00:30

  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так:

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

System.Windows.Forms.OpenFileDialog Компонент открывает диалоговое окно Windows для просмотра и выбора файлов. Чтобы открыть и прочитать выбранных файлов, можно использовать OpenFileDialog.OpenFile метод, или создать экземпляр System.IO.StreamReader класса. В следующих примерах оба подхода.

В .NET Framework, для получения или задания FileName свойство требуется уровень привилегий предоставляемый System.Security.Permissions.FileIOPermission класса. Примеры выполняют FileIOPermission разрешение проверки и может создавать исключения из-за недостатка привилегий, если выполняются в контексте частичного доверия. Дополнительные сведения см. в разделе основы управления доступом для кода.

Можно создавать и запускать эти примеры приложений .NET Framework из C# или командной строки Visual Basic. Дополнительные сведения см. в разделе сборка с помощью csc.exe из командной строки или построения из командной строки.

Начиная с .NET Core 3.0, вы можете также создавать и выполнять примеры как Windows приложений .NET Core из папки с .NET Core Windows Forms <имя_папки > .csproj файл проекта.

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

В следующем примере используется Windows Forms Button элемента управления Click обработчик событий, чтобы открыть OpenFileDialog с ShowDialog метод. Когда пользователь выберет файл, а также выбирает ОК, экземпляр StreamReader класс читает файл и выведет его содержимое в текстовое поле формы. Дополнительные сведения о чтении из файловых потоков, см. в разделе FileStream.BeginRead и FileStream.Read.

Warning

It looks like the sample you are looking for does not exist.

Пример Откройте файл из отфильтрованные объекты с помощью OpenFile

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

Warning

It looks like the sample you are looking for does not exist.

См. также

  • OpenFileDialog
  • OpenFileDialog — компонент

C# OpenFileDialog

C# OpenFileDialog control allows us to browse and select files on a computer in an application. A typical Open File Dialog looks like Figure 1 where you can see Windows Explorer like features to navigate through folders and select a file.

C# OpenFileDialog

Figure 1 

Creating a OpenFileDialog

We can create an OpenFileDialog control using a Forms designer at design-time or using the OpenFileDialog class in code at run-time (also known as dynamically). Unlike other Windows Forms controls, an OpenFileDialog does not have and not need visual properties like others. The only purpose of OpenFileDialog to display available colors, create custom colors and select a color from these colors. Once a color is selected, we need that color in our code so we can apply it on other controls.

Again, you can create an OpenFileDialog at design-time but it is easier to create an OpenFileDialog at run-time.

Design-time

To create an OpenFileDialog control at design-time, you simply drag and drop an OpenFileDialog control from Toolbox to a Form in Visual Studio. After you drag and drop an OpenFileDialog on a Form, the OpenFileDialog looks like Figure 2.

Figure 2 

Adding an OpenFileDialog to a Form adds following two lines of code.

private System.Windows.Forms.OpenFileDialog openFileDialog1;  
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();  

Run-time

Creating a OpenFileDialog control at run-time is merely a work of creating an instance of OpenFileDialog class, set its properties and add OpenFileDialog class to the Form controls.

First step to create a dynamic OpenFileDialog is to create an instance of OpenFileDialog class. The following code snippet creates an OpenFileDialog control object.

OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

ShowDialog method displays the OpenFileDialog.

openFileDialog1.ShowDialog(); 

Once the ShowDialog method is called, you can browse and select a file.

Setting OpenFileDialog Properties

After you place an OpenFileDialog control on a Form, the next step is to set properties.

The easiest way to set properties is from the Properties Window. You can open Properties window by pressing F4 or right click on a control and select Properties menu item. The Properties window looks like Figure 3.

Figure 3 

Initial and Restore Directories

InitialDirectory property represents the directory to be displayed when the open file dialog appears first time.

openFileDialog1.InitialDirectory = @"C:\";  

If RestoreDirectory property set to true that means the open file dialogg box restores the current directory before closing.

openFileDialog1.RestoreDirectory = true;  

Title

Title property is used to set or get the title of the open file dialog.

openFileDialog1.Title = "Browse Text Files";

Default Extension

DefaultExtn property represents the default file name extension.

openFileDialog1.DefaultExt = "txt";  

Filter and Filter Index

Filter property represents the filter on an open file dialog that is used to filter the type of files to be loaded during the browse option in an open file dialog. For example, if you need users to restrict to image files only, we can set Filter property to load image files only.

openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 

FilterIndex property represents the index of the filter currently selected in the file dialog box.

openFileDialog1.FilterIndex = 2;

Check File Exists and Check Path Exists

CheckFileExists property indicates whether the dialog box displays a warning if the user specifies a file name that does not exist. CheckPathExists property indicates whether the dialog box displays a warning if the user specifies a path that does not exist.

openFileDialog1.CheckFileExists = true;  
openFileDialog1.CheckPathExists = true; 

File Name and File Names

FileName property represents the file name selected in the open file dialog.

textBox1.Text = openFileDialog1.FileName; 

If MultiSelect property is set to true that means the open file dialog box allows multiple file selection. The FileNames property represents all the files selected in the selection.

this.openFileDialog1.Multiselect = true;  
foreach (String file in openFileDialog1.FileNames)   
{   
  MessageBox.Show(file);  
}

Read Only Checked and Show Read Only Files

ReadOnlyChecked property represents whether the read-only checkbox is selected and ShowReadOnly property represents whether the read-only checkbox is available or not.

openFileDialog1.ReadOnlyChecked = true;  
openFileDialog1.ShowReadOnly = true;  

Implementing OpenFileDialog in a C# and WinForms Applications

Now let’s create a WinForms application that will use an OpenFileDialog that has two Button controls, a TextBox, and a container control. The Form looks like Figure 4.

OpenFileDialog In C#

Figure 4 

The Browse button click event handler will show an open file dialog and users will be able to select text files. The open file dialog looks like Figure 5.

OpenFileDialog In C#

Figure 5 

The following code snippet is the code for Browse button click event handler. Once a text file is selected, the name of the text file is displayed in the TextBox.

private void BrowseButton_Click(object sender, EventArgs e)  
{  
    OpenFileDialog openFileDialog1 = new OpenFileDialog  
    {  
        InitialDirectory = @"D:\",  
        Title = "Browse Text Files",  
  
        CheckFileExists = true,  
        CheckPathExists = true,  
  
        DefaultExt = "txt",  
        Filter = "txt files (*.txt)|*.txt",  
        FilterIndex = 2,  
        RestoreDirectory = true,  
  
        ReadOnlyChecked = true,  
        ShowReadOnly = true  
    };  
  
    if (openFileDialog1.ShowDialog() == DialogResult.OK)  
    {  
        textBox1.Text = openFileDialog1.FileName;  
    }  
}

The code for Browse Multiple Files button click event handler looks like following.

private void BrowseMultipleButton_Click(object sender, EventArgs e)  
{  
    this.openFileDialog1.Filter =  
"Images (*.BMP;*.JPG;*.GIF,*.PNG,*.TIFF)|*.BMP;*.JPG;*.GIF;*.PNG;*.TIFF|" +  
"All files (*.*)|*.*";  
  
    this.openFileDialog1.Multiselect = true;  
    this.openFileDialog1.Title = "Select Photos";  
  
    DialogResult dr = this.openFileDialog1.ShowDialog();  
    if (dr == System.Windows.Forms.DialogResult.OK)  
    {  
        foreach (String file in openFileDialog1.FileNames)  
        {  
            try  
            {  
                PictureBox imageControl = new PictureBox();  
                imageControl.Height = 400;  
                imageControl.Width = 400;  
  
                Image.GetThumbnailImageAbort myCallback =  
                        new Image.GetThumbnailImageAbort(ThumbnailCallback);  
                Bitmap myBitmap = new Bitmap(file);  
                Image myThumbnail = myBitmap.GetThumbnailImage(300, 300,  
                    myCallback, IntPtr.Zero);  
                imageControl.Image = myThumbnail;  
  
                PhotoGallary.Controls.Add(imageControl);  
            }  
            catch (Exception ex)  
            {  
                MessageBox.Show("Error: " + ex.Message);  
            }  
        }  
    }  
}  
public bool ThumbnailCallback()  
{  
    return false;  
}

The output looks like Figure 6.

OpenFileDialog control in C#

Summary

An OpenFileDialog control allows users to launch Windows Open File Dialog and let them select files. In this article, we discussed how to use a Windows Open File Dialog and set its properties in a Windows Forms application. 

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как открыть переменные среды в windows 11
  • Как обновить драйвер сетевого адаптера для windows 10 вручную
  • Конвертер pdf в jpg для windows
  • Заметки в windows 10 где находится
  • Windows license std что это