Richtextboxdaki yazınız şayet uzunsa bunu yazdırmak bir işkenceye donebilir. Şahsen kendim biraz araştırmama rağmen adam gibi kod bulamadım. En güzel Hasan Bozkurt'un yazdığı bir kodu buldum fakat oda yanlış çalışıyor sonsuz sayfa çıkartmaya çalışıyordu. Tabi sonuç olarak iş başa düştü ve kolları sıvıyarak başladık kod yazmaya.
Öncelikle PrintDocument i projemize ekliyoruz.
525 private void yazdırToolStripMenuItem_Click(object sender, EventArgs e)
526 {
527 printDocument1.Print();
528 }
Ben toolStrip kullandığım için bu şekilde siz butona yazdır tuşu ekliyecekseniz bunu butonun click event ine yazacaksınız. Daha sonra form sayfasında printDocument e çift tıklıyoruz
529 int satir_no = 0;
530 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
531 {
548 SolidBrush s = new SolidBrush(Color.Blue);
549
550 int satirlength = rtf.Lines.Length;
551 string satir = "";
552 int sayfasatir = (e.MarginBounds.Height) / this.Font.Height;
553
554 int sayac = 1;
555 while (satir_no < satirlength)
556 {
557 satir =rtf.Lines[satir_no];
558 e.Graphics.DrawString(satir, this.Font, s, 5, this.Font.Height * sayac);
559 sayac++;
560 satir_no++;
561 if (sayac-1 >= sayfasatir)
562 {
563 break;
564 }
565 }
566
567 if (sayac <= sayfasatir)
568 {
569 e.HasMorePages = false;
570 }
571 else
572 {
573
574 e.HasMorePages = true;
575
576 }
rtf richtexbox ımızın adı oluyor. PrintPage olayına bu kodları yazarak richtextbox daki tüm yazıyı çıktı olarak alabilirsiniz.
İyi kullanımlar