سؤال

أواجه مشكلة في إنشاء صفحات متعددة في 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top