Para informes, uso el control RDLC.
Para todo lo demás, utilizo los objetos de impresión inherentes en .NET.
Editar Los objetos de impresión inherentes se encuentran todos en el espacio de nombres System.Drawing.Printing. Cuando utiliza PrintDialog o PrintPreviewDialog en una aplicación WinForms (o WPF), es a estos objetos a los que le está dando el control.
El concepto fundamental es que está utilizando la impresora. La forma más simple de esto es:
Sub MyMethod()
Dim x as New PrintDocument
AddHandler x.PrintPage, AddressOf printDoc_PrintPage
x.Print
End Sub
Sub printDoc_PrintPage(sender as Object, e as PrintPageEventArgs)
Dim textToPrint as String= ".NET Printing is easy"
dim printFont as new Font("Courier New", 12)
dim leftMargin as int= e.MarginBounds.Left
dim topMargin as int = e.MarginBounds.Top
e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin)
End Sub
Lo que sucede aquí es que cuando mi objeto (x) se envía el comando de impresión, se genera el evento "IMPRIMIR" (el cual está diseñado para imprimir 1 página a la vez) Este evento utiliza el atributo Graphics de PrintPageEventArgs para dibujar la cadena relevante directamente a la cola de impresión.
Here's one tutorial, y una búsqueda rápida en Google para "tutorial de impresión .NET" devuelve un poco más de 200K resultados.
¿Cuánto ha mirado ya el espacio de nombres System.Drawing.Printing? –
He buscado algunas formas de imprimir, pero antes de profundizar en una me gustaría saber más: es una gran pérdida de tiempo elegir la forma incorrecta de obtener más información. – Sam