Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
27.04.2015
Размер:
253.73 Кб
Скачать

4.10.4. Печать текстовых файлов

Многие приложения MS Windowsв процессе работы, кроме вывода результатов в элементы управления, например, в TextBox, требуют получение результатов работы программы на бумаге. В VB нет специальных операторов вывода на печать, а методы, используемые для организации печати, зависят от типа и количества генерированного вывода для печати. Причем во всех случаях основным механизмом для управления печати является класс PrintDocument, который может быть создан двумя способами:

  • добавлением на форму элемента управления PrintDocument;

  • определением в программном коде.

Класс PrintDocument включает несколько полезных объектов. Объект PrintSettings содержит настройки принтера по умолчанию, объект PageSettings содержит настройки печати для конкретной страницы, объект PrintPageEventArgs содержит информацию о событиях для печатаемой страницы. Так как класс PrintDocument определен на пространстве имен System.Drawing.Printting,то при его использовании в верхнюю часть кода формы необходимо добавлять оператор Imports:

Imports System.Drawing.Printing

Для примера рассмотрим простейший случай печати текста из объекта TextBox, в котором класс PrintDocument определен в коде программы, а для отправки всего содержимого текстового поля на принтер по умолчанию будет использоваться метод Graphics.DrawString. Причем необходимо обратить внимание, что создаваемая программа позволяет печатать не более одной страницы текста. Чтобы напечатать несколько станиц, требуется существенно усложнить код программы.

Пример 4.10.4-1. Взяв за основу проект из примера 4.10.3-1, создать проект Пример4.10.4-1,в котором содержимое текстового файла считывается в TextBox2 и выводится на печать.

  1. Добавим на форму проекта примера 4.10.3-1 элемент управления Button с именем

Button3 и надписью Печать.

Получившаяся форма должна выглядеть подобно показанной на рис. 4.10.4-1.

Рис. 4.10.4-1

  1. Добавить следующий исходный код в класс формы (рис. 4.10.4-2).

Imports System.Drawing.Printing

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button1.Click

' Открыть существующий фаайл и загрузить из него текст

Try

TextBox2.Text = My.Computer.FileSystem.ReadAllText(TextBox1.Text)

Catch ex As Exception

MsgBox("Файл не может быть открыт из за "& _

" следующей ошибки:"& vbCrLf & vbCrLf & ex.Message)

End Try

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button2.Click

' Записать в файл отредактированные данные

If (My.Computer.FileSystem.FileExists(TextBox1.Text) = True) Then

If (MsgBox("Файл уже существует. Переписать в него данные?", _

MsgBoxStyle.YesNo Or MsgBoxStyle.Question, _

"Переписать") <> MsgBoxResult.Yes) Then Exit Sub

End If

' Запись данных

Try

My.Computer.FileSystem.WriteAllText(TextBox1.Text, _

TextBox2.Text, False)

Catch ex As Exception

MsgBox("Данные в файл не могут быть переписаны из за "& _

" следующей ошибки:"& vbCrLf & vbCrLf & ex.Message)

End Try

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Button3.Click

Try

Dim PrintDocument1 As New PrintDocument

AddHandler PrintDocument1.PrintPage, AddressOfMe.PrintText

PrintDocument1.Print()

Catch ex As Exception

MessageBox.Show("Проблемы печати", ex.ToString())

End Try

End Sub

Private Sub PrintText(ByVal sender As System.Object, _

ByVal pr As PrintPageEventArgs)

pr.Graphics.DrawString(TextBox2.Text, _

New Font("arial", 12, FontStyle.Regular), Brushes.Black, 100, 150)

pr.HasMorePages = False

End Sub

EndClass

Рис. 4.10.4-2

В событийной процедуре SubButton3_Click( )определена переменная PrintDocument1, которая представляет объект PrintDocument и используется для объявления обработчика ошибок и печати текстового документа.

В этой процедуре использется оператор AddHandler, который указывает, что когда возникает событие PrintPage (Печать страницы) объекта PrintDocument1, должен вызываться обработчик событий PrintText. Технически, для указания обработчика события PrintText используется оператор AddressOf, который при возникновении события передает вызовы в соответствующий обработчик событий – процедуру PrintText. Эта процедура обрабатывает событие печати, генерируемое методом PrintDocument1.Print. В конце этой процедуры свойство pr.HasMorePage устанавливается в значение False, чтобы указать, что выводимая страница последняя.

  1. Запустить программу на выполнение.

Ввести путь к файлу в текстовое поле TextBox1 и нажать кнопку Открыть файл.

В текстовом поле TextBox2 отобразится содержимое текстового файла.

Нажать кнопку Печать.

На текущий принтер будет выдано содержимое текстового поля TextBox2.

Соседние файлы в папке Учебное_пособие-Раздел4-Информатика-270100з