Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#]Imprimer à partir d'un richBox

    16 mars 2011 à 17:46:00

    Bonjour,

    Je suis actuellement sur un projet, et dans ce projet il me faut faire une impression à partir d'un richTextBox.
    J'ai donc utilisé:
    -un PrintDocument renommé -> DocAImprimer
    -un PrintDialog renommé -> ImprimerQCM

    j'ai essayé de bricolé un truc avec tout sa, mais le souci c'est que je vois pas comment faire pour imprimer le contenue du richTextBox (j'arrive pas a dire que DocAImprimer dois être richTextBox.Text ou autre si il y a un truc pour gardé la mise en forme)

    voici mon code:


    private void imprimerToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                
                //caractéristiques de l'impression
                DocAImprimer.DocumentName = "QCM "+ DateTime.Now;
                ImprimerQCM.Document = DocAImprimer;
                ImprimerQCM.AllowSelection = true;
                ImprimerQCM.AllowSomePages = true;
    
                if (ImprimerQCM.ShowDialog() == DialogResult.OK)
                {
                    //impression du documment
                    DocAImprimer.Print();
                }
            }
    


    Merci d’avance et bonne fin d’après-midi! :)
    • Partager sur Facebook
    • Partager sur Twitter
      19 mars 2011 à 6:42:38

      Il me semble, mais je dis peu etre une betise ( il est tard :D ) qu'il faut gerer l'evenement OnBeginPrint() ou OnPrintPage().

      Regarde de ce cote. Voici un exemple de code :

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      
      namespace ExemplePrintDocument
      {
          public partial class Form1 : Form
          {
              private string[] lines;
              private int linesPrinted;
      
              public Form1()
              {
                  InitializeComponent();
              }
      
              private void exitToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  Application.Exit();
              }
      
              private void newToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  this.richTextBox1.Clear();
              }
      
              private void saveToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  try
                  {
                      this.richTextBox1.SaveFile("txt.txt");
                  }
                  catch (Exception err)
                  {
                      MessageBox.Show(err.Message.ToString());
                  }
              }
      
              private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  this.richTextBox1.LoadFile("txt.txt");
              }
      
              private void OnPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
              {
                  int x = e.MarginBounds.Left;
                  int y = e.MarginBounds.Top;
      
                  while (linesPrinted < lines.Length)
                  {
                      e.Graphics.DrawString(lines[linesPrinted++], new Font("Arial", 10), Brushes.Black, x, y);
                      y += 15;
      
                      if (y >= e.MarginBounds.Bottom)
                      {
                          e.HasMorePages = true;
                          return;
                      }
                  }
      
                  linesPrinted = 0;
                  e.HasMorePages = false;
              }
      
              private void printToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  if (this.richTextBox1.SelectedText != "")
                  {
                      this.printDialog2.AllowSelection = true;
                  }
                  if (this.printDialog2.ShowDialog() == DialogResult.OK)
                  {
                      this.printDocument1.Print();
                  }
              }
      
              private void OnBeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
              {
                  char[] param = { '\n' };
      
                  if (this.printDialog2.PrinterSettings.PrintRange == System.Drawing.Printing.PrintRange.Selection)
                  {
                      lines = this.richTextBox1.SelectedText.Split(param);
                  }
                  else
                  {
                      lines = this.richTextBox1.Text.Split(param);
                  }
      
                  int i = 0;
                  char[] trimParam = { '\r' };
      
                  foreach (string s in lines)
                  {
                      lines[i++] = s.TrimEnd(trimParam);
                  }
              }
      
              private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  this.pageSetupDialog1.AllowPrinter = true;
                  this.pageSetupDialog1.ShowDialog();
              }
      
              private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  this.printPreviewDialog1.ShowDialog();
              }
      
              private void policeToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  if (this.fontDialog1.ShowDialog() == DialogResult.OK)
                      this.richTextBox1.Font = this.fontDialog1.Font;
              }
      
              private void OnApplyFontDialog(object sender, EventArgs e)
              {
                  this.richTextBox1.Font = this.fontDialog1.Font;
              }
      
              private void colorToolStripMenuItem_Click(object sender, EventArgs e)
              {
                  this.colorDialog1.ShowDialog();
              }
          }
      }
      


      Je ne sais plus si on doit gerer obligatoirement ces events ou si cetait juste pour nous faire pratiquer... Du moin le code fonctionne :). Jespere que cela pourra t'aider :)

      Doum
      • Partager sur Facebook
      • Partager sur Twitter

      [C#]Imprimer à partir d'un richBox

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown