Estoy haciendo algunas impresiones personalizadas usando un PrintDocument en mi aplicación. Tengo un requisito de iniciar sesión cuando nuestros artículos se imprimen con éxito. He conseguido originalmente esto con algo como:Detecta cuando un PrintDocument imprime correctamente (no solo una vista previa)
print_doc.EndPrint += (o,e) => printed_callback();
Para hacer mi printed_callback
conseguir invoca cuando una impresión acabada. Sin embargo, ahora que estoy agregando soporte de vista previa, estoy pasando un PrintDocument
construido exactamente de la misma manera en un PrintPreviewDialog. Si lo hace, se invocará el evento EndPrint
después de la representación inicial de la impresión necesaria para la vista previa.
Como resultado, incluso si un usuario hace clic en "Vista previa" y luego simplemente cierra la vista previa, nuestro código de registro se invoca.
¿Alguna sugerencia sobre cómo diferenciar entre una impresión real y una "impresión de vista previa"? Desafortunadamente, no puedo simplemente no conectarme al EndPrint
para el PrintDocument
pasado al PrintPreviewDialog
ya que el usuario puede hacer clic en el botón "Imprimir" en el cuadro de diálogo de vista previa y activar una impresión.
doble 1, de preguntas y respuestas: -D – peenut
El método anterior es cuando han sido puestos en cola todas las páginas del PrintDocument. No verifica si el trabajo se ha completado. Si desea comprobar cuándo se ha completado el trabajo, consulte [PrintQueue] (https://msdn.microsoft.com/en-us/library/system.printing.printqueue (v = vs.110) .aspx). –