Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНЫЕ РАБОТЫ по РПП.doc
Скачиваний:
77
Добавлен:
09.05.2015
Размер:
1.72 Mб
Скачать

Сохранение файла

Чтобы добавить в наше приложение возможность сохранения документов, перетащите из панели инструментовToolbox в окно дизайнера форм компонент SaveFileDialog. Этот компонент получит идентификатор saveFileDialog1(рисунок 2.4).

Рисунок2.4 - Добавление компонента SaveFileDialog

После добавления этого компонента отредактируйте его свойства Filter и FileName.

Свойство Filter должно иметь значение, обеспечивающее работу с документами RTF и текстовыми файлами : RTF files|*.rtf|Text files|*.txt

Для свойства FileName задайте значение doc. При этом по умолчанию документы будут сохраняться в файле с этим именем (рисунок 2.5).

Рисунок 2.5 - Стандартное диалоговое окно сохранения файла

Для сохранения документов в файле добавьте в класс SimpleNotepadForm следующий метод с именем MenuFileSaveAs:

Здесь метод saveFileDialog1.ShowDialog отображает стандартный диалог сохранения файлов, показанный на рисунке 2.5. Если пользователь указал имя файла и щелкнул в этом диалоге кнопку «Сохранить», метод MenuFileSaveAs сохраняет документ в файле, вызывая для этого метод richTextBox1.SaveFile.

Далее этот метод отображает имя сохраненного файла в заголовке окна нашего приложения:

this.Text = "Файл [" + saveFileDialog1.FileName + "]";

Заметим, что существует несколько перегруженных вариантов метода SaveFile.

Если методу SaveFile задан один параметр (путь к сохраняемому файлу), то документ будет сохранен в формате RTF.

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

Если передать через этот параметр значение 

RichTextBoxStreamType.PlainText, документ будет сохранен в виде текстового файла с потерей форматирования.

В том случае, когда нужно сохранить документ в формате RTF, используйте значение RichTextBoxStreamType.RichText.

Можно также сохранить документ и как текст Unicode, для чего нужно передать через второй параметр методу SaveFile значение RichTextBoxStreamType.UnicodePlainText.

Определив в исходном тексте нашего приложения метод MenuFileSaveAs, добавьте его вызов в обработчики событий от строк Сохранить и Сохранить как.

Для простоты мы сделаем функции этих строк меню одинаковыми.

  1. Печать документа

    1. Печать документа Добавление программных компонентов для печати

Добавьте в окно дизайнера форм компоненты:

PrintDocument, PrintDialog, PrintPreviewDialog, PageSetupDialog, как это показано на рисунке 3.1 (если все программные компоненты не помещаются в видимую часто окна, щелкните окно с компонентами правой клавишей мыши и выберите строку Line Up Icons, для того чтобы упорядочить значки компонентов).

Рисунок 3.1 - Добавлены компоненты для печати документов

Далее Вам нужно будет настроить свойства добавленных компонентов.

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

Компонент PrintDocument  впишите в свойство:

DocumentName на SimpleNotepadDocument.

Выберите в свойстве  Document остальных  компонентов строку  SimpleNotepadDocument.

Для компонента PrintDialog устанавливаем следующие свойства:

AllowSelection – true- Разрешение на печать выделенного фрагмента документа

AllowSomePages – true- Разрешение на печать нескольких страниц

PrintDocument – SimpleNotepadDocument - Связывание с экземпляром объекта PrintDocument.

Для работы с классами, предназначенными для выполнения операций с потоками и печати, добавьте в начало листинга нашей программы следующие строки: using System.Drawing.Printing;

Добавите в конструктор класса формы, соответствующий код:

public SimpleNotepad()

{

InitializeComponent();

//Определяем номер страницы,

// с которой следует начать печать

printDialog1.PrinterSettings.FromPage = 1;

//Определяем максимальный номер печатаемой страницы.

printDialog1.PrinterSettings.ToPage =

printDialog1.PrinterSettings.MaximumPage;

}

//Переменная для хранения текста для печати.

//В нее мы будем помещать текст из RichTextBox

string stringPrintText;

//Переменная, определяющая номер страницы,

// с которой нужно начать печать

int StartPage;

//Переменная, определяющая количество страниц для печати:

int NumPages;

//Переменная, определяющая номер текущей страницы:

int PageNumber;

Следует обратить внимание на переменную stringPrintText — именно она будет отвечать за передачу текста в объект печати. Поскольку мы определили для нее строковый тип, это означает, что мы не сможем вывести на печать рисунки в тексте — как мы знаем, элемент RichTextBox поддерживает их наличие.