PDA

View Full Version : سوال: چاپ در چندین صفحه



Captain Tsubasa
سه شنبه 13 بهمن 1388, 02:21 صبح
سلام دوستان عزیز
یه سوال داشتم.من یه پایگاه اطلاعاتی دارم که میخوام اون رو توی جدول چاپ کنم.جدول من 27 خونه بیشتر نداره واگر اطلاعات من بیشتر از 27 تا شد من چجوری باید کد بنویسم تا توی صفحه بعد چاپ کنه.
این کدی که من برای چاپ نوشتم:


private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
float w = 210f, h = 297;
e.Graphics.PageUnit = GraphicsUnit.Millimeter;

FontFamily fmTahoma = new FontFamily("Tahoma");

StringFormat format_Right = new StringFormat(StringFormatFlags.NoClip);
StringFormat format_Left = new StringFormat(format_Right);
StringFormat format_Center = new StringFormat(format_Right);
format_Right.Alignment = StringAlignment.Far;
format_Left.Alignment = StringAlignment.Near;
format_Center.Alignment = StringAlignment.Center;


Font fTahoma_10 = new Font(fmTahoma, 10, FontStyle.Regular);
Font fTahoma_14 = new Font(fmTahoma, 14, FontStyle.Bold);
Font fTahoma_12 = new Font(fmTahoma, 12, FontStyle.Bold);


Pen P01 = new Pen(Color.Black, 0.1f);
Pen P05 = new Pen(Color.Black, 0.5f);

e.Graphics.DrawString("لیست کتاب های ادبیات", fTahoma_14, Brushes.Black, 105, 2, format_Center);
e.Graphics.DrawRectangle(P05, 5, 10, 190, 280);
e.Graphics.DrawLine(P05,180,10,180,290);
e.Graphics.DrawLine(P05, 140, 10, 140, 290);
e.Graphics.DrawLine(P05, 100, 10, 100, 290);
e.Graphics.DrawLine(P05, 60, 10, 60, 290);
for(int i=280;i>0;i-=10)
e.Graphics.DrawLine(P05, 5, i, 195, i);
e.Graphics.DrawString("کد", fTahoma_12, Brushes.Black, 187, 12, format_Center);
e.Graphics.DrawString("عنوان", fTahoma_12, Brushes.Black, 160, 12, format_Center);
e.Graphics.DrawString("نویسنده", fTahoma_12, Brushes.Black, 120, 12, format_Center);
e.Graphics.DrawString("سال انتشار", fTahoma_12, Brushes.Black, 80, 12, format_Center);
e.Graphics.DrawString("ملاحظات", fTahoma_12, Brushes.Black, 33, 12, format_Center);
int a, b, c=23;
b = dataGridView1.RowCount;
for (a = 0; a < b; a++,c+=10)
{
e.Graphics.DrawString(dataGridView1[1, a].Value.ToString(), fTahoma_10, Brushes.Black, 187, c, format_Center);
e.Graphics.DrawString(dataGridView1[2, a].Value.ToString(), fTahoma_10, Brushes.Black, 160, c, format_Center);
e.Graphics.DrawString(dataGridView1[3, a].Value.ToString(), fTahoma_10, Brushes.Black, 120, c, format_Center);
e.Graphics.DrawString(dataGridView1[4, a].Value.ToString(), fTahoma_10, Brushes.Black, 80, c, format_Center);
}

}

کسی میدونه من دقیقا باید چیکار کنم؟

Yasersadegh
سه شنبه 13 بهمن 1388, 08:31 صبح
سلام دوست عزيز
شما كاري كه بايد بكنيد اينه كه اول كد زير رو در ابتداري تابع تون بنويسيد!



e.HasMorePages = true;


سپس كدي كه برايه چاپ سطرهاتون نوشتيد رو محدود نكنيد! يعني اگه مختصاتي كه هستش از صفحتون زد بيرون مشكلي نداره، خود برنامه صفحه جديد ايجاد ميكنه و در صفحه جديد بقيه رو چاپ مي كنه!! ( به عبارت ديگر كدي برايه صفحه جديد نياز نيست بنويسيد برنامه خودش كارشو بلده!!:لبخند:)

موفق باشيد:چشمک: