Опубликован: 31.08.2006 | Доступ: свободный | Студентов: 3927 / 218 | Оценка: 4.14 / 3.89 | Длительность: 39:16:00
ISBN: 978-5-9570-0021-3
Лекция 19:

Работа с принтерами

Печать текста из объекта Text Box

Вы познакомились с элементом управления PrintDocument и печатью графики. Теперь попробуйте использовать аналогичную методику для печати содержимого текстового поля формы Visual Basic. В следующем упражнении вы создадите проект, который с помощью класса PrintDocument печатает текст, но на этот раз вы определите класс с помощью кода программы, и не будете добавлять элемент управления PrintDocument в вашу форму. В дополнение к этому вы будете использовать для отправки всего содержимого объекта текстового поля на принтер по умолчанию метод Graphics.DrawString.

Примечание. Следующая программа разработана для печати только одной страницы текста или менее. Чтобы печатать несколько страниц, вы должны добавить дополнительный код программы, который изучается далее в этой лекции.

Использование метода Graphics.DrawString для печати текста

  1. Щелкните на команде Close Solution (Закрыть решение) в меню File (Файл), а затем создайте в папке c:\vbnet03sbs\Гл.18 новый проект с именем My Print Text. Появится пустая форма.
  2. Используйте элемент управления Label и нарисуйте в верхней части формы метку. Эта метка также будет отображать строку с инструкциями для пользователя.
  3. Используйте элемент управления TextBox и нарисуйте под меткой текстовое поле. Это поле будет содержать текст, который вы хотите распечатать.
  4. Установите свойство Multiline этого текстового поля на значение True, а затем увеличьте текстовое поле так, чтобы оно стало достаточно большим для ввода нескольких строк текста.
  5. Используйте элемент управления Button и нарисуйте под объектом текстового поля объект кнопки. Этот объект кнопки будет печатать текстовый файл.
  6. Установите для объектов формы следующие свойства:

    Объект Свойство Установка
    Label1 Text Введите в объект текстового поля какой-нибудь текст, а затем щелкните на кнопке Печать текста.
    TextBox1 ScrollBars Vertical
    Text пустой (empty)
    Button1 Text Печать текста
    Form1 Text Печать текста

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


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

  7. Сделайте двойной щелчок мышью на кнопке Печать текста. В Редакторе кода появится процедура события Button1_Click.
  8. Прокрутите код формы в самый верх, а затем введите следующее объявление Imports:

    Imports System.Drawing.Printing

    Оно определяет пространство имен System.Drawing.Printing, которое требуется для определения класса PrintDocument и необходимых объектов этого класса.

  9. Теперь снова прокрутите код вниз до процедуры события Button1_Click, а затем введите следующий код программы:

    'Печать с использованием обработчика ошибок для перехвата проблем
    Try
    	'Объявляем переменную PrintDoc типа PrintDocument
    	Dim PrintDoc As New PrintDocument
    	AddHandler PrintDoc.PrintPage, AddressOf Me.PrintText
    	PrintDoc.Print()		'печать текста
    	Catch ex As Exception	'перехват исключения печати
    	MessageBox.Show("Извините, возникли проблемы с печатью", _
    	ex.ToString())
    End Try

    Строки, являющиеся новыми или изменившиеся по сравнению с программой Print Graphics, выделены жирным шрифтом. Вместо того чтобы добавлять элемент управления PrintDocument в вашу форму, на этот раз вы просто создали PrintDocument программно. Для этого вы использовали ключевое слово Dim и тип PrintDocument, который был определен в вашей программе при определении пространства имен System.Drawing.Printing. После этого переменная PrintDoc представляет объект PrintDocument и используется для объявления обработчика ошибок и печати текстового документа. Обратите внимание, что для ясности я переименовал процедуру, которая будет обрабатывать событие печати в PrintText (вместо PrintGraphic ).

  10. Прокрутите процедуру события Button1_Click в Редакторе кода вверх до области глобальных объявлений. Введите следующее объявление Sub-процедуры:

    'Sub для печати текста
    Private Sub PrintText(ByVal sender As Object, _
    	ByVal ev As PrintPageEventArgs)
    	'Используем DrawString для создания текста в объекте Graphics
    	ev.Graphics.DrawString(TextBox1.Text, New Font("Arial", _
    	11, FontStyle.Regular), Brushes.Black, 120, 120)
    	'Указываем, что это последняя печатаемая страница
    	ev.HasMorePages = False
    End Sub

    Это процедура, которая обрабатывает событие печати, генерируемое методом PrintDoc.Print. Изменения по сравнению с процедурой PrintGraphic из предыдущего упражнения также выделены жирным шрифтом. При печати текста вы используете новый метод. Вместо использования Graphics.DrawImage, который рисует графическое изображение, вы должны использовать Graphics.DrawString, который печатает текстовую строку. Я указал текст для печати в свойстве Text объекта текстового поля, базовое форматирование (Arial, 11 пунктов, обычный стиль, черный цвет) и координаты (x, y) начала печати на странице, равные (120, 120). Это придает печатной странице внешний вид, похожий на текстовое поле на экране. Как и в прошлый раз, я установил свойство ev.HasMorePages на значение False, чтобы указать, что задание на печать не содержит нескольких страниц.

  11. Чтобы сохранить изменения, щелкните на кнопке Save All (Сохранить все) на панели инструментов.

Запустите программу, чтобы увидеть, как печатается объект текстового поля.

Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Светлана Ведяева
Светлана Ведяева
Россия, Саратов