Pull to refresh

Печать из под dataGridView на C#

Что это и зачем


Данный метод печати был откопан мною во время выполнения практики. Вдаваться в подробности задания не буду, скажу лишь то, что программа должна была выводить некие запросы собранные из базы данных на печать.
Оформление печати в программе тогда для меня было в новинку и немного пугало, как оказалось не зря. Все потому, что найти какую-либо внятную информацию по данной теме оказалось очень не просто.
Этот метод печати подойдет для малых проектов, точнее для таких же практических заданий, навряд ли он поможет с чем-то особенным. Главное что может этот метод, печатать отдельный элемент программы — dataGridView.
При этом, этот метод на самом деле гораздо функциональный, чем просто печать запросов. Он может печатать все, что вы поместите в dataGridView.

Метод печати


Собственно, сам метод печати использует создание bitmap изображения, которое потом и выводится на печать. Для многих это не ново, однако для новичков будет интересно узнать, как это делается.
Сам код:
private void printDocument_PrintPage(object sender, PrintPageEventArgs e) // Метод печати для printDocument
        {
            Bitmap bmp = new Bitmap(dataGridView.Size.Width + 10, dataGridView.Size.Height + 10);
            dataGridView.DrawToBitmap(bmp, dataGridView.Bounds);
            e.Graphics.DrawImage(bmp, 0, 0);
        }

А теперь пошаговое решение:
  • В windows forms проект на C# добавляем элемент управления printDocument. После чего дважды кликаем по его интерфейсу.
  • В открывшемся коде нас будет ждать пустой метод печати.
  • Вписываем туда объявление и создание bitmap изображения (Bitmap bmp = new Bitmap(dataGridView.Size.Width + 10, dataGridView.Size.Height + 10);), где указываются размеры изображения, по умолчанию — размер dataGridView плюс 10 пикселей. Само изображение носит название bmp.
  • Затем прорисовываем в картинку сам dataGridView, по умолчанию прорисовывается построчно.
  • Следующий шаг, рисует на листе наше получившееся изображение.
  • Далее создаем обработчик, называем как угодно и описываем действие по клику мыши (printDocument1.Print();), тем самым отправляя наше изображение на печать.

Последнее слово


Сейчас кажется таким простым, однако пришлось изрядно попотеть в поисках чего-то подобного. Метод имеет огромное количество минусов, но есть плюсы, к примеру он свободно справляется с печатью цветных изображений.
Спасибо за внимание, надеюсь что хоть кому-то статья поможет, предлагайте свои методы печати из баз данных на C#, автор хоть ума наберется.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.