السلام عليكــم ورحمـة الله وبركاتــه
أريد طباعة محتويات dataGridView1
ياريت احد من الاعضاء الكرام يكتب لى كود الطباعه بحيث اضغط على زر button1
يطبع محتويات dataGridView1
كما فى الصورة الموضحه

السلام عليكــم ورحمـة الله وبركاتــه
أريد طباعة محتويات dataGridView1
ياريت احد من الاعضاء الكرام يكتب لى كود الطباعه بحيث اضغط على زر button1
يطبع محتويات dataGridView1
كما فى الصورة الموضحه



السلام عليكم أخ حامد وأعذرني على التأخير في الرد :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;
}أرجوا أن يكون الشرح وافي وأسأل الله أن يوفقك يا أخ حامد
في امان الله