Taha Ahmed Ответов: 1

Не знаю даже...как пользоваться электронной.hasmorepages


Здравствуйте, у меня проблема, печать документа показать на одной странице

Что я уже пробовал:

Частная суб Print_PrintPage(как byval отправителя как объект, как byval E Как системы.Рисование.Печатание.PrintPageEventArgs)
- Нарисуйте прямоугольник на полях.
Тусклый день как струна
Dim ddv As Short = 1
Dim dd As Short = 1
'Для F = От 0 До 1
p = p + 1
метка2:
Dim x As Short = 77 ' см. haight
Dim y As Short = 690
Dim formating As New StringFormat(0, 1)
форматирование.Выравнивание = StringAlignment.Рядом
форматирование.FormatFlags = StringFormatFlags.DirectionRightToLeft
Dim dotted_pen как новое перо(цвет.Черный, 3)
e.графика.DrawRectangle(dotted_pen, 25, 25, 775, 1120)
e.графика.DrawLine(dotted_pen, 700, 25, 700, 1145)
e.графика.DrawLine(dotted_pen, 25, 75, 800, 75)
e.графика.Шнурок ("اليوم", шрифт 1, кисти.Черный, 780, 26, формовочный)
e.графика.Шнурок ("المشرفون", шрифт 1, кисти.Черный, 450, 26, формирующий)
Dim num1, num2 как десятичное число
Для ddv = dd до 6
метка1:

Выбрать ДДВ
Корпус 1
день = "السبت"
Случай 2
день = "الاحد"
Случай 3
день = "الاثنين"
Случай 4
день = "الثلاثاء"
Корпус 5
день = "الاربعاء"
Корпус 6
день = "الخميس"
Дело Другое
Выход Из Субмарины
Конец Выбрать


Дим DAT как новый объект oledbdataadapter("выберите ID_teacher,[name_techer],[gob_teacher],[istelam_date],[TAKLIF],[TAKLIF_DAY] от учителя, где [TAKLIF_DAY]='" &амп; сутки & " и [TAKLIF]='مشرف دور'", кон)
Дим ДТТ в качестве нового объекта DataTable
дат.Заполнение(dtt)
Если ДТТ.строки.Тогда посчитайте < 1
дат.Располагать()
соглашения об избежании двойного налогообложения.Располагать()
dd = dd + 1
ddv = dd
y = 690
GoTo label1
Конец, Если
Дим даа как новый объект oledbdataadapter("выберите name_techer от учителя, где [TAKLIF]='عام مشرف' и [TAKLIF_DAY]='" &амп; сутки & "' ", кон)
Дим + Ко в качестве нового объекта DataTable
даа.Заполнить(Колорадо)
Dim r как строка
Если co.Rows.Тогда посчитайте < 1
даа.Располагать()
ко.Распоряжаться()
r = "لم يتم اختيار المشرف العام"
Перейти метка3
Еще
r = co.Rows(0).Item("name_techer")
Конец, Если
метка3:
e.графика.DrawString("المشرف العام :" & r, font2, кисти.Черный, 690, x, формирующий)
e.графика.DrawLine(dotted_pen, 25, x + 40, 700, x + 40)
e.графика.Шнурок(день, шрифт 1, кисти.Черный, 780, x + 50, формовочный)
Dim ii As Short = 1
Для i = 0 до dtt.строк.Количество - 1
e.графика.&Ампер шнурок(второй &ампер; " -"; соглашения об избежании двойного налогообложения.Ряды(я).Пункт("name_techer").ToString, font3, кисти.Черный, y, x + 50, формирующийся)
y = y - 230
Если y < 170, то
x = x + 30
y = y + 690
Конец, Если
ii += 1
num1 = ii
Следующий
x = x + 50 + 45
e.графика.DrawLine(dotted_pen, 25, x, 800, x)
y = 690
dd = dd + 1
num2 = num2 + ((num1 / 3) * 45)
Если 1145 - num2 < ((num1 / 3) * 45), то
е.HasMorePages = Истина
num2 = 0
х = 77
y = 690
MsgBox(num2)
Еще
e.HasMorePages = False
Конец, Если
Следующий
Конец Подводной Лодки

Patrice T

В чем же вопрос ?

1 Ответов

Рейтинг:
6

OriginalGriff

Когда вы используете PrintDocument, он вызывает событие PrintPage один раз: и если вы не установите e.HasMoreBages в True, это все, что вы получите.
Если вы установите его истинным, то он будет стрелять снова и снова, пока вы даже не оставите его ложным.

Идея заключается в том, что вы печатаете строки "x" из ваших данных на странице n, а затем, если есть еще данные для печати, вы устанавливаете HasMorePages true. Фреймворк отправит страницу на принтер, и rasie teh событие повторится. Вы печатаете x больше на странице n+1, и так далее.