الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طباعة محتويات Datagridview1

بدأه حامد محمد الوصيف في 28 يونيو 2009 · 2 رد · 635 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه

أريد طباعة محتويات dataGridView1

ياريت احد من الاعضاء الكرام يكتب لى كود الطباعه بحيث اضغط على زر button1

يطبع محتويات dataGridView1

كما فى الصورة الموضحه

510.jpg

13598125002.gif

038c8ecfa8.gif

#2

ياريت احد الاعضاء يفدنى

لانى محتاج الكود ده ضرورى

13598125002.gif

038c8ecfa8.gif

#3

السلام عليكم أخ حامد وأعذرني على التأخير في الرد :blush:

للجواب على سؤالك خلينا نراجع أو نطلع على بعض المفاهيم الأساسية للطباعه :

أولا : قبل لا نطبع أي صفحة خلينا نطلع على أبعاد الصفحه وانا أقصد هنا الـ Margin وطول وعرض الصفحه

لو قلنا صفحه طولها 1000 وعرضها 250 بكسل وكان الـ Margin Height 100 فعشان نحسب قيمة الـ Bottom Margin نستخدم المعادلة التاليه

Bottom Margin = Page Height - Margin Height

يعني راح يساوي 900

لحسن الحظ إنه في الـ .NET هذا الكلام كله راح ينحسب أوتوماتيكي من إعدادات الطابعه المعرفه في الجهاز

راح نستخدم المكتبات التاليه

System.Drawing
System.Drawing.Printing

وراح نستخدم Class اسمه PrintDocument وطريقته مره سهله كل الي عليك إنك تربط الحدث PrintPage بداله تقوم بالطباعه

السيناريو :

لما يتم الضغظ على زر button1 راح ناخذ كل محتويات الـ DataGridView1 ونخزينها في string وراح نستدعي الداله PrintDocument.Print وراح نقراء محتويات الـ string سطر سطر نقوم بالطباعه مع مراعاة أبعاد الصفحه عشان نقدر نحدد إذا كان يلزمنا صفحة جديدة ولا لا

الكود :

المكتبات

using System.IO;
using System.Drawing;
using System.Printing;

متغيرات على مستوى المشروع أو الـ Form

// Global Varriables

StringReader sr;

كود حدث الضغطه على الزر:

private button1_Click(object sender, EventArgs e) {
	// Reading DataGridView1 contents

	string textToBeprinted = string.Empty;

	foreach(DataGridViewRow row in DataGridViewRow1.Rows)
		textToBePrinted = string.Format("{0}\t{1}\t{2}\t{3}\n", row.Cells[0].Value, row.Cells[1].Value
			row.Cells[2].Value, row.Cells[3].Value);

	PrintDocument pd = new PrintDocument();
	pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);

	sr = new StringReader(textToBePrinted);

	pd.Print();
}


private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
	float y = e.MarginBounds.Top + 15F; // y: لقياس الإحداثيات الصاديه للصفحة
	MessageBox.Show(string.Format("Bottom: {0}, Page Height: {1}",
	e.MarginBounds.Bottom, e.PageBounds.Height));

	string line = string.Empty;

	while ((line = sr.ReadLine()) != null)
	{
		e.Graphics.DrawString(line, font, Brushes.Black, 0, y);
		y += 15;
		if (y >= e.MarginBounds.Bottom) break;
	}

	if (line != null) e.HasMorePages = true;
	else e.HasMorePages = false;
}

أرجوا أن يكون الشرح وافي وأسأل الله أن يوفقك يا أخ حامد

في امان الله

مواضيع مشابهة