PDA

View Full Version : آموزش: نحوه چاپ یک فرم با تمام خصوصیات



Masoome_das
چهارشنبه 13 مرداد 1389, 10:45 صبح
برای اینکه با چاپ فرم هاتون درکریستال ریپورت مشکل دارید
از این روش ساده استفاده کنید
فرمتون را تبدیل به یک تصویر کنید و ازش پرینت بگیرید ولی این
نکته را توجه داشته باشد که
فقط تعداد اطلاعات محدود و کمتر از یک صفحه را می توان به این طریق چاپ کرد مثلا صدور یک فیش ساده یا صدور یک کارت عکس دار
نکته به ابعاد فرمتون حتما توجه کنید که بیشتر یا کمتر از صفحه چاپ نباشه
پیشنهاد من برای کاغذ ( A4 (826,680
سپس عین این کد را در صفحه ای که می خواهید ازش پرینت بگیرید کپی کنید
کنترل های لازم را هم در فرم بکشید
Buttom,PrintDocument,PrintDialog,PrintRievieDialog


[System.Runtime.InteropServices.DllImport("gdi32.dll")]
publicstaticexternlong BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
privateBitmap memoryImage;
privatevoid CaptureScreen()
{
Graphics mygraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = newBitmap(s.Width, s.Height, mygraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
IntPtr dc1 = mygraphics.GetHdc();
IntPtr dc2 = memoryGraphics.GetHdc();
BitBlt(dc2, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, dc1, 0, 0, 13369376);
mygraphics.ReleaseHdc(dc1);
memoryGraphics.ReleaseHdc(dc2);
}
//PrintPage// printDocument1
privatevoid printDocument1_PrintPage(System.Object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(memoryImage, 0, 0);
}
//
privatevoid printButton_Click(System.Object sender, System.EventArgs e)
{
CaptureScreen();
printDialog1.AllowPrintToFile = false;
printDialog1.AllowSelection = printDialog1.AllowSomePages = false;
printDocument1.PrinterSettings = printDialog1.PrinterSettings;


printPreviewDialog1.Document = printDocument1;

if (printPreviewDialog1.ShowDialog()== DialogResult.OK)
{
if (printDialog1.ShowDialog() == DialogResult.OK)
{
printDocument1.Print();
}
}
}


خصوصیت
PrintPage مربوط به PrintDocument را به متد
printDocument1_PrintPage
نسبت بدهید
و رویداد کلیک باتن را هم به متد
printButton_Click

موفق باشید