На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Печать dataGridView из C++/CLI в Visual Studio


Давайте научимся создавать картинку для печати из dataGridView и отправлять её на печать с выбором принтера на C++/CLI в Visual Studio 2015. На самом деле это все несложно, но пришлось повозиться, чтобы найти полностью рабочий вариант, устраивающий меня.

Итак, кидаем на форму два элемента. printDocument1. Его обработчик

private: System::Void printDocument1_PrintPage(System::Object^  sender, System::Drawing::Printing::PrintPageEventArgs^  e) {
	int hey = 0;
	for (int i = 0; i < (dataGridView1->Rows->Count); i++) {
		hey = hey + dataGridView1->Rows[i]->Height;
	}
	Bitmap^ bmp = gcnew Bitmap(dataGridView1->Size.Width + 10, hey + 10);//немного прибавляем размер
	dataGridView1->DrawToBitmap(bmp, dataGridView1->Bounds);
	String^ drawString = "Какая-то строка";
	System::Drawing::Font^ drawFont = gcnew System::Drawing::Font("Arial", 16);//шрифт
	SolidBrush^ drawBrush = gcnew SolidBrush(Color::Black);//цвет черный
	float x = 100.0F;
	float y = 100.0F;
	float width = 400.0F;//ширина строки
	float height = 50.0F;//высота
	RectangleF drawRect = RectangleF(x, y, width, height);
	e->Graphics->DrawString(drawString, drawFont, drawBrush, drawRect);
	e->Graphics->DrawImage(bmp, 0, 0);
}
Сначала мы в цикле определяем высоту всех ячеек датагрида, затем создаем битмап из него, далее добавляем прямоугольник с надписью, а также в объект дорисовываем картинку. Если надо, например, повернуть картинку, то это делается вот так:

bmp->RotateFlip(RotateFlipType::Rotate90FlipNone);
Но вообще, так как мы вызываем стандартное диалоговое окно печати, то ориентацию лучше задавать в нем. Например, вот печать в Foxit (pdf файл):



И на форму кидаем кнопку, с обработчиком её по клику:

private: System::Void button8_Click(System::Object^  sender, System::EventArgs^  e) {
PrintDialog^ printDialog1 = gcnew PrintDialog();
printDialog1->Document = printDocument1;
if (printDialog1->ShowDialog() == Windows::Forms::DialogResult::OK)
printDocument1->Print();	
}
Здесь мы создаем объект класса PrintDialog, привязываем его к нашему документу, и если нажата кнопка «Ок», то отправляем его на печать.




тегизаметки, си плюс плюс, Visual Studio





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Отправка смс на C#
Путь от бездомного до правителя


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.