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


Практическое руководство. Сохранение файлов с помощью элемента управления RichTextBox в Windows Forms

Элемент управления RichTextBox в Windows Forms может записывать сведения, отображаемые в одном из нескольких форматов:

  • с обычным текстом;

  • обычный текст Юникода;

  • формат RTF (Rich Text Format);

  • формат RTF с пробелами вместо объектов OLE;

  • обычный текст с текстовым представлением объектов OLE.

Чтобы сохранить файл, вызовите метод SaveFile. Для сохранения данных в поток можно также использовать метод SaveFile. Дополнительные сведения см. в разделе SaveFile(Stream, RichTextBoxStreamType).

Сохранение содержимого элемента управления в файл

  1. Определите путь к сохраняемому файлу.

    Для этого в реальном приложении обычно используется компонент SaveFileDialog. Его обзор приведен в статье Общие сведения о компоненте SaveFileDialog.

  2. Вызовите метод SaveFile элемента управления RichTextBox, указав сохраняемый файл и при необходимости тип файла. Если вы вызываете метод с именем файла в качестве единственного аргумента, предполагается, что файл должен быть сохранен в формате RTF. Чтобы указать другой тип файла, вызовите метод со значением перечисления RichTextBoxStreamType в качестве второго аргумента.

    В следующем примере в качестве расположения RTF-файла выбрана папка Мои документы. Используется именно это расположение, поскольку предполагается, что большинство компьютеров, работающих под управлением операционной системы Windows, содержат этот каталог. Это также позволяет пользователям с минимальным уровнем доступа к системе безопасно запускать приложение. В приведенном ниже примере предполагается, что форма с элементом управления RichTextBox уже добавлена.

    Public Sub SaveFile()
       ' You should replace the bold file name in the
       ' sample below with a file name of your own choosing.
       RichTextBox1.SaveFile(System.Environment.GetFolderPath _
       (System.Environment.SpecialFolder.Personal) _
       & "\Testdoc.rtf", _
          RichTextBoxStreamType.RichNoOleObjs)
    End Sub
    
    public void SaveFile()
    {
       // You should replace the bold file name in the
       // sample below with a file name of your own choosing.
       // Note the escape character used (@) when specifying the path.
       richTextBox1.SaveFile(System.Environment.GetFolderPath
       (System.Environment.SpecialFolder.Personal)
       + @"\Testdoc.rtf",
          RichTextBoxStreamType.RichNoOleObjs);
    }
    
    public:
       void SaveFile()
       {
          // You should replace the bold file name in the
          // sample below with a file name of your own choosing.
          richTextBox1->SaveFile(String::Concat
             (System::Environment::GetFolderPath
             (System::Environment::SpecialFolder::Personal),
             "\\Testdoc.rtf"), RichTextBoxStreamType::RichNoOleObjs);
       }
    

    Важно!

    В этом примере создается файл (если файл отсутствует). Если приложению требуется создать файл, оно должно иметь доступ для создания к папке. Для задания разрешений используются списки управления доступом. Если файл уже существует, то приложению достаточно иметь лишь доступ для записи, т. е. меньшие привилегии. Безопаснее создавать файл во время развертывания, если это возможно, а также предоставлять доступ для чтения к отдельному файлу вместо доступа для создания к папке. По тем же соображениям рекомендуется записывать данные в пользовательские папки, а не в корневую папку или папку Program Files.

См. также