Danish Kareem Ответов: 1

Как добавить функцию печати в C#


Здравствуйте,ребята, я работаю над среднесрочным проектом на C#, это ведение учета магазина и itand в этом у меня есть приложение Winform есть DataGridView и некоторые элементы управления все готово, кроме функциональности печати.
Вот ссылка на WinForm : Ссылка на WinForm
Я хочу Распечатать DataGrid и информацию из элементов управления, в DataGrid есть несколько скрытых столбцов, которые я также хочу скрыть на странице.
1-я страница должна содержать информацию о компании,которая похожа на статическую, и информацию о поставщике, которая изменяется соответственно.Я хочу добавить заголовок страницы и общее количество на последней странице, если их несколько.
вот ссылка о формате Билла, которого я хочу достичь не совсем, но что-то вроде этого:
Ссылка на формат счета

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

Я попробовал PrintDocument вслед за таттом, но оказалось, что проектирование страницы-это кошмар для меня, используя e.graphics.....рисуя по координатам, я должен снова запустить приложение n снова, чтобы увидеть, правильно ли я делаю.

1 Ответов

Рейтинг:
12

OriginalGriff

Цитата:
рисуя по координатам я должен снова запустить приложение n снова чтобы увидеть правильно ли я делаю

Да - потому что вы пытаетесь сделать макет правильным.

Самое простое решение-реализовать предварительный просмотр печати (так как он использует тот же код, но печатает на дисплее, чтобы легко и быстро увидеть, что у вас есть.
Затем добавьте драйвер печати PDF (google найдет вам довольно много) и распечатайте его вместо настоящего принтера для тестирования - он не заполняет комнату мусором, как струйный принтер.

Но начните с того, что выложите свою страницу вручную на бумаге и работайте с ней, чтобы ваша рутина печати работала.

Есть "альтернатива" всему этому - есть компонент PrintForm, который вы можете добавить: Как распечатать форму с помощью компонента PrintForm (Visual Basic) | Microsoft Docs[^]
Но - и это большое "НО"! Не поддавайтесь искушению использовать его. Он печатает форму так, как вы ее видите, поэтому, если половина ваших данных прокручивается в нижней части DataGridView, то она не будет напечатана, и вы вообще не сможете заставить компонент печатать ее!
Упорствуйте с PrintDocument - это может показаться неуклюжим, но это очень, очень эффективно!