giovedì 2 ottobre 2008

Trucco: stampare un datagridiview tramite .Net (VB.Net e C#)

Il frammento di codice, qui di seguito, illustra come stampare un controllo DatagridView,
tramite la classe printdocument.
Dopo aver aggiunto un controllo datagridview (riempito con dei valori) aggiunge
un controllo printdocument.
Per l'evento print page del controllo printdocument, aggiungete il seguente codice.



VB.Net


Private Sub PrintDocument1_PrintPage(ByVal sender
As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Handles PrintDocument1.PrintPage


Dim PaintArgs As New PaintEventArgs(e.Graphics, New Rectangle(New
Point(0, 0), Me.Size))


Me.InvokePaint(DataGridView1, PaintArgs)


End Sub


C#

private void printDocument1_PrintPage(object
sender, System.Drawing.Printing.PrintPageEventArgs
e)


{




PaintEventArgs
PaintArgs = new PaintEventArgs (e.Graphics,
new Rectangle(new Point(0, 0), this.Size));



this.InvokePaint(dataGridView1 , PaintArgs);




}

Per effettuare la stampa, in una funzione o evento click di un pulsante aggiungete la seguente riga di codice.

VB.Net

PrintDocument1.Print()

C#


printDocument1.Print();

2 commenti:

Investigatore ha detto...

Ho provato il codice proposto, ma no mi ha stampato nulla !!
Nel Private Sub PrintDocument1_PrintPage(ecc.. ecc.)
ho inserito il seguente codice
Dim PaintArgs As New PaintEventArgs(e.Graphics, New Rectangle(New Point(25, 600), Me.Size))
Me.InvokePaint(GridAnagrafiche, PaintArgs)

La datagridview nel mio caso si chiama GridAnagrafiche, cosa ho sbagliato ????

Francesco ha detto...

Anch'io ho provato il codice proposto, ma mi ha stampato soltanto la griglia vuota, senza i dati inseriti. Inoltre sul foglio viene stampato soltanto la porzione visibile nella finestra ma non tutta la tabella...
Un bel trucco ma non adatto a questa situazione...
Se vuoi sapere come si stampa una tabella puoi guardare qui:
http://www.gandalfrank.altervista.org/Stampare_Tabella_DGV.html