PDA

View Full Version : سوال: امکان چاپ در برنامه



mostafaslc
شنبه 28 شهریور 1388, 15:10 عصر
سلام
من می خوام توی برنامه ام امکان چاپ بزارم یعنی بتونم از صفحه برنامه ام پرینت بگبرم
اگه کمکم کنید ممنون می شم.

Saeed.Masoumi
شنبه 28 شهریور 1388, 16:08 عصر
سلام
برای اینکه از فرم برنامه پرینت بگیری اینجا یه سر بزن ضرر نمی کنی
http://barnamenevis.org/forum/showthread.php?t=174936
(http://barnamenevis.org/forum/showthread.php?t=174936)

1234
شنبه 28 شهریور 1388, 18:51 عصر
سلام دوست عزیز البته بهتره از کریستال ریپورت استفاده کنی ولی من یک روش دیگه بهت می گم :

اول یک Button روی فرم قرار بده و در خاصیت name اون btnPrint بنویس و خاصیت text اونو هم (چاپ) بزار
در جعبه ابزار Printing روی کنترل PrintDialog دو بار کلیک کن تا به برنامه اضافه بشه حالا در قسمت using کد زیر را قرار بده:
using System.IO;
using System.Drawing.Printing;
حالا متغیر های زیر را در ابتدای برنامه تعریف کن :
private string strFileName;
private StreamReader objStreamToPrint;
private Font objPrintFont;
حالا به قسمت طراحی فرم بر گردین و بر روی گزینه btnPrint دو بار کلیک کنین تا به قسمت کد نویسی مربو طه به اون وارد بشین : حالا کد های زیر را براش وارد کنین :
private void btnPrint_Click(object sender, EventArgs e)
{
// Declare an object for the PrintDocument class
PrintDocument objPrintDocument = new PrintDocument();
// Set the DocumentName property
objPrintDocument.DocumentName = "Text File Print
Demo";
// Set the PrintDialog properties
printDialog1.AllowPrintToFile = false;
printDialog1.AllowSelection = false;
printDialog1.AllowSomePages = false;
// Set the Document property for
// the objPrintDocument object
printDialog1.Document = objPrintDocument;
// Show the Print dialog
if (printDialog1.ShowDialog() == DialogResult.OK)
{
objStreamToPrint = new StreamReader(strFileName);

objPrintFont = new Font("Arial", 10);
objPrintDocument.PrinterSettings =
printDialog1.PrinterSettings;

objPrintDocument.PrintPage +=
new PrintPageEventHandler(prtPage);

objPrintDocument.Print();

objStreamToPrint.Close();
objStreamToPrint = null;
}
}سپس متد زیر را در قسمت ویرایشگر کد وارد کنین :

private void prtPage(object sender, PrintPageEventArgs e)
{
// Declare variables
float sngLinesPerpage = 0;
float sngVerticalPosition = 0;
int intLineCount = 0;
float sngLeftMargin = e.MarginBounds.Left;
float sngTopMargin = e.MarginBounds.Top;
string strLine;

sngLinesPerpage = e.MarginBounds.Height /
objPrintFont.GetHeight(e.Graphics);

strLine = objStreamToPrint.ReadLine();
while((intLineCount < sngLinesPerpage) &&
(strLine != null))

{
// Calculate the vertical position on the page
sngVerticalPosition = sngTopMargin +
(intLineCount * objPrintFont.GetHeight(e.Graphics));

e.Graphics.DrawString(strLine, objPrintFont,
Brushes.Black, sngLeftMargin,
sngVerticalPosition,
new StringFormat());
intLineCount = intLineCount + 1;
if (intLineCount < sngLinesPerpage)
{
strLine = objStreamToPrint.ReadLine();
}
}if (strLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}البته دوست عزیز اینجا تو گذاشتن سیمی کالن مشکله یعنی طرف راست میاد بهتره آدرس ایمیاتو بدی تا کد بدون اشتباه تایپی رو برات بفرستم
موفق باشی

Saeed.Masoumi
یک شنبه 29 شهریور 1388, 02:03 صبح
البته دوست عزیز اینجا تو گذاشتن سیمی کالن مشکله یعنی طرف راست میاد

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

بهتره آدرس ایمیاتو بدی تا کد بدون اشتباه تایپی رو برات بفرستم
یک کمک دیگه هم دارم :چشمک: ببین یک قسمتی هست به نام مدیریت ضمیمه ها اونجا می تونی فایلتو آپلود کنی
در کل موفق باشی.:قلب: