Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.05.2012
Сообщений: 6

Не выходить весь текст на печать. PrintPreviewDialog, PrintDocument

22.07.2013, 14:14. Показов 1539. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, делаю вывод найденных данных на печать в виде отчета. Не могу понять почему часть данных не распечатываются, хотя в PrintPreviewDialog отображается все как должно быть. Помогите разобраться.
На первом скрине то что должно быть, а на втором то что получается при распечатывание.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//Печать списка совпадений
        private void toolPrinter_Click(object sender, EventArgs e)
        {
            if (listSearch.Count == 0)
                return;
            dateCur = DateTime.Now;
            printCount = 0;
            printPageCount = 1;
            flPrint = true;
            PrintPreviewDialog pr = new PrintPreviewDialog();
            PrintDocument printText = new PrintDocument();
            printText.PrintPage += new PrintPageEventHandler(onPrint);   
            pr.Document = printText;
            pr.ShowDialog();
        }
        private void onPrint(object sender, PrintPageEventArgs e)
        {
            float linesPerPage = 0;
            float yPos = 0;
            int count = 0;
            float leftMargin = e.MarginBounds.Left;
            float topMargin = e.MarginBounds.Top;
            string line = null;
 
            Font messageFont1 = new Font("Times New Roman", 12, System.Drawing.GraphicsUnit.Point);
            Font messageFont2 = new Font("Times New Roman", 16, System.Drawing.GraphicsUnit.Point);
 
            // Calculate the number of lines per page.            
            System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Black);
            Graphics grap = e.Graphics;            
            grap.DrawString("Наименование", messageFont1, new SolidBrush(Color.Black), 25, 20);
            grap.DrawString("Дата выдачи: " + dateCur, messageFont1, new SolidBrush(Color.Black), 550, 20);
            grap.DrawString("ПРОТОКОЛ проверки", messageFont2, new SolidBrush(Color.Black), 300, 50);
            grap.DrawRectangle(myPen, new Rectangle(25, 80, 780, 1));
 
            grap.DrawRectangle(myPen, new Rectangle(25, 1100, 780, 1));
            grap.DrawString("Лист " + Convert.ToString(printPageCount), messageFont1, new SolidBrush(Color.Black), 380, 1110);
            grap.DrawString("протокол от " + dateCur.ToShortDateString(), messageFont1, new SolidBrush(Color.Black), 25, 1110);
            
            float f = e.MarginBounds.Height; //прямоугольная область для печати, высота
            float a = messageFont1.GetHeight(grap); //Возврощение межстрочного интервала
            linesPerPage = f / a; //Число строк
   
            // Print each line of the file.
            int k = 0;
            while (count < linesPerPage && k + printCount < listSearch.Count)
            {
                int id = listSearch[k + printCount].idClassFiz;
                line = "Совпадение\n" + listFiz[id].name1 + " " + listFiz[id].name2 + " " + listFiz[id].name3 +
                    "\n-----------------------------------------------------";                
                yPos = topMargin + (count * messageFont1.GetHeight(grap));
                grap.DrawString(line, messageFont1, new SolidBrush(Color.Black), leftMargin, yPos);               
                k++;
                count = count + 3;                               
            }
            printCount = printCount + k;
            if (printCount >= listSearch.Count-1)
                flPrint = false;
            printPageCount++;
            if(flPrint)
                e.HasMorePages = true;
            else
                e.HasMorePages = false;
        }
Если я правильно понял в PrintPreviewDialog отображается 1 лист, а распечатываться 2 лист.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.07.2013, 14:14
Ответы с готовыми решениями:

PrintDocument, PrintPreviewDialog - вывод содержимого формы на печать
Здравствуйте. Нашёл код вывода DataGridView на печать, но не могу полностью разобраться. Прошу помощи. На форме...

Не проходит печать из PrintPreviewDialog
Всем привет. Столкнулся с проблемой: Необходимо вывести на печать DataGridView, но беда в том, что печатает без данных. Т.е. если делаю...

Печать DataGridView с помощью PrintDocument
День добрый, есть DataGridView который нужно распечатать, мои попытки привели к печати всего окна. В интернете есть очень много инфы на C#,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2013, 14:14
Помогаю со студенческими работами здесь

Печать через PrintDialog и PrintDocument: печатается пустой лист
Вобщем дело в том, что при выводе на печать принтер прогоняет пустой лист и все, а содержимое из textBox не печатает! вот мой код: ...

Как грамотно отправить на печать несколько файлов изображений? Класс Printing.Printdocument
Всем привет! Продолжаю делать (доводить до ума) свой кастомный Мастер печати изображений. За эталон берется стандартный Мастер...

Отредактировать текст, удаляя из него лишние пробелы. Заключить весь текст в кавычки
Всем здравствуйте. Выручайте делаю лабораторные и вот такая задача: Отредактировать текст, удаляя из него лишние пробелы. заключить весь...

Как правильно считать текст из файла? Весь текст, со всеми знаками, пробелами
подскажите, чет затупил как правильно считать текст из файла(весь текст со всеми знаками пробелами и т.д.), чтобы поработать с этим текстом...

Не выводить весь макет на печать 1с
Добрый день. Кто знает, как часть макета не выводить на печать, подскажите плз. Вот нужно убрать эту часть обведенную с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru