Para imprimir un form con datos y con scroll el único código que me funcionó fué el siguiente.
Ya que yo quería imprimir un Panel pero no lo he conseguido, así que creé un nuevo Form y copié los datos del Panel.
Imprimir
- Arrastrar el componente PrintDocument al proyecto (PrintDocument1 en mi caso).
- Ya en el botón para imprimir la factura crear un PrintDialog (printer en mi caso).
- Ponerle el nombre que queréis que se muestre en la cola de impresión.
- Asignarle el Form a imprimir (Form2 en mi caso).
- En mi caso hago un rellenarFactura() que coge los datos de un PanelImprimir y los copia al Form2 para mostrarlos al usuario como datos finales que se van a imprimir.
- Hago un Form2.Show() para que se muestre el que se va a imprimir finalmente con todos los datos.
- Después de que el usuario confirme que quiere imprimir la factura, le asigno los márgenes.
- Y finalmente llamo al método Print pasándole los parámetros el Form2 y la opción que es Scrollable.
Private Sub ImprimirFactura_Click(sender As Object, e As EventArgs) Handles ImprimirFactura.Click
Dim Message As String = "¿Quieres imprimir esta factura?"
Dim Caption As String = "Vas a imprimir esta factura."
Dim Buttons As MessageBoxButtons = MessageBoxButtons.OKCancel
Dim Result As DialogResult
Result = MessageBox.Show(Message, Caption, Buttons)
If Result = System.Windows.Forms.DialogResult.OK Then
Dim printer As PrintDialog = New PrintDialog
'Set the document name
Form2.PrintForm1.DocumentName = "Factura"
'Set the printed document
printer.Document = Form2.PrintDocument1
Form2.rellenarFactura()
Form2.Show()
'If the printer dialog returns ok Print the page
If printer.ShowDialog() = Windows.Forms.DialogResult.OK Then
Form2.PrintForm1.PrinterSettings = printer.PrinterSettings
Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Top = 10
Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Bottom = 10
Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Left = 20
Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Right = 10
Form2.PrintForm1.Print(Form2,PowerPacks.Printing.PrintForm.PrintOption.Scrollable)
End If
End If
End Sub
No hay comentarios:
Publicar un comentario