Stampare con C#

Mattepuffo's logo
Stampare con C#

Stampare con C#

Mnetre stampare una JTable in Java è piuttosto semplice, stampare una DataGridView in C# non è così immediato.

Prima di tutto nel Windows Form aggiungete un oggetto PrintDocument.

Ve lo ritroverete in basso; selezionatelo e nelle proprietà impostate il DocumentName e tra gli eventi impostate l'evento PrintPage.

L'evento sarà una cosa del genere:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    Bitmap bm = new Bitmap(this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
    Rectangle rc = new Rectangle(0, 0, this.dataGridViewEntrate.Width, this.dataGridViewEntrate.Height);
    dataGridViewEntrate.DrawToBitmap(bm, rc);
    e.Graphics.DrawImage(bm, 0, 0);
}

In pratica definiamo l'area da stampare e trasformiano la DataGridView in una Bitmap.

Per fare le cose per bene aggiungiamo anche un oggetto PrintDialog e nelle proprietà impostiamo Document impostando printDocument1....(controllate anche le opzioni che sono interessanti).

A questo punto ho messo un evento sul mio MenuItem (la classica voce del menu File -> Stampa):

private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
   if (printDialog1.ShowDialog() == DialogResult.OK)
   {
      printDocument1.Print();
   }
}

Uscirà la classica finestra che ci mostrerà le stampanti.

Se diamo l'OK il nostro PrintDocument verrà stampato.

 

Se volessimo avere anche l'anteprima facciamo così.

Nel Form aggiungiamo un oggetto PrintPreviewDialog ricordandoci di impostare la proprietà Document.

Poi ho aggiunto un altro MenuItem con questo evento:

private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)

{

  printPreviewDialog1.ShowDialog();

}


Condividi

2 Commenti

  • Domenico

    Gent.mo Sig. Matteo, Completato un programma con database in MDF, ho inserito l'evento Stampa e gradirei se è disponibile fornire alcuni suggerimenti per migliorare tale evento. La ringrazio e fiducioso di un Suo riscontro, La saluto. Domenico

    13/11/2020
  • Ico

    Grazie mille, funziona alla perfezione!

    25/03/2015

Commentami!