نحوه پرینت گرفتن از فرم بدون چاپ شدن دکمه ها

diehard2007

عضو جدید
با سلام و خسته نباشید به شما . من از کل محتویات فرمم پرینت می گیرم و هیچ مشکلی ندارم تنها مشکل اینجاست که 2 تا دکمه پایین صفحه دارم یکی پرینت و دیگری خروج حالا وقتی پرینت رو می زنم تمام محتویات چاپ می شه و اون دو دکمه هم چاپ می شه من نمی خوام اون دو دکمه چاپ بشه باید چه کار کنم ؟

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern long BitBlt(IntPtr hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, int dwRop);
private Bitmap memoryImage;
private void CaptureScreen()
{
Graphics mygraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage =
new Bitmap(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);
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(memoryImage, 0, 0);
}
private void btnPrint_Click(object sender, EventArgs e)
{
CaptureScreen();
printDocument1.Print();
}
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
با سلام و خسته نباشید به شما . من از کل محتویات فرمم پرینت می گیرم و هیچ مشکلی ندارم تنها مشکل اینجاست که 2 تا دکمه پایین صفحه دارم یکی پرینت و دیگری خروج حالا وقتی پرینت رو می زنم تمام محتویات چاپ می شه و اون دو دکمه هم چاپ می شه من نمی خوام اون دو دکمه چاپ بشه باید چه کار کنم ؟

[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);
}
privatevoid printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(memoryImage, 0, 0);
}
privatevoid btnPrint_Click(object sender, EventArgs e)
{
CaptureScreen();
printDocument1.Print();
}

عزیز وقتی شما فرم رو چاپ می کنی همه چیز چاپ میشه. بهتر اینه که با ابزارهای گزارش گیری کار کنی که زیاد هم هستند وبا استفاده از اون ها چاپ بگیری. یه روشدیگر هم استفاده از GDI+ هست که بسیار دنگ و فنگ داره و واقعاً سخته :gol:
 

mostafa272

عضو جدید
قبل از خط :e.Graphics.DrawImage(memoryImage, 0, 0);

دکمه ها رو مخفی کن (با ()Hide) و بعد از این خط اونا رو دوباره ()show کن.
 

diehard2007

عضو جدید
من تو فرمم 30 تا لیبل دارم و 2 دکمه بازم می تونم از کریستال ریپورت استفاده کنم ؟
 

diehard2007

عضو جدید
سلام . ببخشید من نتونستم اون 2 دکمه رو مخفی کنم می شه این کدی که براتون گذاشتم رو اصلاحش کنید که اون 2 دکمه در پرینت نباشه . ممنون می شم
 

overflow

عضو جدید
سلام به همه دوستان خوب گشتم اصول برنامه نویسی پیدا نکردم به امید خدا میخوام اصولشو
یاد بدم تا دنبال دانلود کد نباشید
 

Similar threads

بالا