在C#中,可以通过设置PrintDocument的PrintPage事件来实现打印功能,并且可以使用PrintPreviewDialog来进行预览。
当用户点击PrintPreviewDialog中的“打印”按钮时,会自动触发PrintDocument的PrintPage事件,并在该事件完成后自动关闭对话框。
VB.net代码
首先在弹出预览窗口的时候,加一个判断是否关闭的变量 PrintPreviewDialogClose,默认值为0
private PrintPreviewDialogClose as integer =0
Private Sub PrintPreview()
PrintPreviewDialogClose = 0
If _printDocument IsNot Nothing Then
_PrintPreviewDialog.Document = _printDocument
_PrintPreviewDialog.WindowState = FormWindowState.Maximized
_PrintPreviewDialog.ShowDialog()
End If
End Sub
End Sub
然后在PrintPage事件里面加变量的处理,因为在预览的时候会触发一次PrintPage事件,打印的时候也会触发一次。
所以预览窗口弹出的时候PrintPreviewDialogClose 将被赋值为1,
点击打印按钮的时候PrintPreviewDialogClose 为1,所以自动关闭预览窗体。
Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
If PrintPreviewDialogClose > 0 Then
_PrintPreviewDialog.Close()
End If
PrintPreviewDialogClose = 1
End Sub