عرض كافة صفحات PrintDocument على PrintPreviewControl
-
18-09-2019 - |
سؤال
أواجه مشكلة في إنشاء صفحات متعددة في PrintDocument وعرضها داخل PrintPreviewControl.يمكنني إنشاء صفحة واحدة بسهولة كافية، لكن تجميع صفحات متعددة معًا أمر بعيد عني.
سأقوم في النهاية برسم عدة صفحات من الأشياء باستخدام GDI، لكن لا يمكنني تشغيل شيء مثل هذا كما هو متوقع.
private PrintDocument doc = new PrintDocument();
private string[] printMe = new string[]{ "page1", "page2", "page3" );
private int pageCount = 0;
private void FormLoad(object sender, EventArgs e)
{
doc.PrintPage += new PrintPageEventHandler(PrintPage);
PrintPreviewControl.Document = doc;
}
private void doc_BeginPrint(object sender, PrintEventArgs e){ pageCount = 0; }
private void PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
g.DrawString(drawMe[pageCount++], "Lucida Console", Brushes.Black, new Point(20,20));
e.HasMorePages = (pageCount printMe.Length );
}
الفكرة هي إنشاء ثلاث صفحات منفصلة وعرضها ضمن عنصر تحكم PrintPreview.ماذا ينقصني؟
المحلول
لقد تم تشويه مقتطف التعليمات البرمجية الخاص بك تمامًا عند النقطة الحرجة، حيث تقوم بتعيين e.HasMorePages.هناك مشكلة واحدة صارخة في التعليمات البرمجية الخاصة بك:تحتاج إلى تنفيذ معالج الأحداث BeginPrint لإعادة تعيين عداد الصفحات إلى 0.
نصائح أخرى
لست متأكدًا من كيفية إظهار جميع الصفحات بشكل افتراضي، ولكن يمكنك إظهار أكثر من صفحة واحدة في ملف PrintPreviewControl
عن طريق تحديد Columns
الممتلكات، وجدت في تَخطِيط قسم من ملكيات النافذة و/أو Rows
الممتلكات، وجدت في سلوك القسم، بقيمة أعلى من 1.