se puede usar un PrintPreviewControl en una clase?

12/05/2010 - 01:38 por edcha | Informe spam
El asunto es que intento hacer un dll que me sirva para imprimir, todo
lo tengo pero el asunto es el siguiente:

Se puede usar solo el PrintPreviewControl dentro del Dll y despues
pasarlo a un PrintPreviewControl que este en el formulario que he
formateado para que sustituya el printpreviewdialog.

Gracias por la ayuda

Preguntas similare

Leer las respuestas

#6 edcha
15/05/2010 - 03:43 | Informe spam
Bien gracias de nuevo Alberto y disculpa por favor mi falta de
explicar.

El asunto es que como te mencione tengo un formulario abierto que
tiene los botones y un printPreviewControl1

Yo creía que que con solo asignar al "printPreviewControl1" el
documento creado en la DLL debería de presentarlo pero no ha resultado
así, yo lo asigno de esta manera después de crear el documento.
this.printPreviewControl1.Document docDLLToPrint.PDocument;

También he intentado que después de crear el "PDocument" se lo asigno
al "DLLprintPreviewControl" y después este se lo paso al
"printPreviewControl1" que esta en el form que esta abierto y lo hago
de esta manera.
this.printPreviewControl1 DLLPrint.DLLprintPreviewControl;

Pero en ambos casos el printPreviewControl1 no muestra ningún
documento y lo que dice es "El documento no contiene ninguna pagina".

Ahora bien si dentro de un DLL creo mi propio formulario en vez del
plano PrintPreviewDialog y después de crear el "PDocument" haga
aparecer mi propio formulario PrintPreviewDialog con el método
".Show();" ahi si el formulario que aparece presenta el documento.

Pero lo que quiero ahora es que un formulario abierto que contenga un
printPreviewControl1 me presente un documento creado.

Espero me tiendas de nuevo una mano pues estoy sin salida con esto.

Muchas Gracias de Nuevo
Respuesta Responder a este mensaje
#7 Alberto Poblacion
15/05/2010 - 08:35 | Informe spam
"edcha" wrote in message
news:
Pero lo que quiero ahora es que un formulario abierto que contenga un
printPreviewControl1 me presente un documento creado.



En otras palabras: lo que ocurre es que el printPreviewControl ya es
visible, y quieres que se refresque "sobre la marcha" cuando le cambias el
PrintDocument. El hecho de que ese PrintDocument venga desde una librería es
irrelevante.
La verdad es que nunca lo he probado así. Siempre he asignado primero
todas las propiedades del control, incluyendo el documento, y luego lo he
hecho visible. Si ya es visible, ¿cómo hacemos que se refresque? Pues así a
bote pronto no lo sé; si no funciona cambiándole el Document, habrá que
probar a ver si se refresca con algún otro método (por ejemplo, ¿has probado
el Refresh?) Si con esto no funciona, se me ocurre una pequeña chapuza, que
es quitar el PrintPreviewControl de la colección Controls del formulario que
lo contiene (con un Remove) y volver a añadir un nuevo PrintPreviewControl
(con Add), para que no tenga más remedio que repintarse.
Respuesta Responder a este mensaje
#8 edcha
15/05/2010 - 20:11 | Informe spam
Pues si, después de toda la ayuda que me has dado, al final he
entendido que según parece solo presenta el documento cuando se carga
el PrintPreviewControl en el formulario.

Bueno no entiendo por que no le dejaron la clase PrintPreviewControl
algún método que permita cargar un documento y que ya visible entonces
permita cargar otros documentos sin tener que quitarlo y volverlo a
cargar en el formulario.

Después de tus respuestas por fin entendí como funciona y pongo aquí
este ejemplo que encontré en el SDK y que al fin entendí.
Para usarlo solo tienen que poner el método
InitializePrintPreviewControl(); al iniciar el formulario, solo como
ejemplo.

internal PrintPreviewControl PrintPreviewControl1;
private System.Drawing.Printing.PrintDocument docToPrint new System.Drawing.Printing.PrintDocument();

private void InitializePrintPreviewControl()
{

// Construct the PrintPreviewControl.
this.PrintPreviewControl1 = new PrintPreviewControl();

// Set location, name, and dock style for PrintPreviewControl1.
this.PrintPreviewControl1.Location = new Point(0, 0);
this.PrintPreviewControl1.Name = "PrintPreviewControl1";
this.PrintPreviewControl1.Dock = DockStyle.Fill;

// Set the Document property to the PrintDocument
// for which the PrintPage event has been handled.
this.PrintPreviewControl1.Document = docToPrint;

// Set the zoom to 25 percent.
this.PrintPreviewControl1.Zoom = 0.5;

// Set the document name. This will show be displayed when
// the document is loading into the control.
this.PrintPreviewControl1.Document.DocumentName = "Prueba Doc";

// Set the UseAntiAlias property to true so fonts are smoothed
// by the operating system.
this.PrintPreviewControl1.UseAntiAlias = true;

// Add the control to the form.
this.Controls.Add(this.PrintPreviewControl1);

// Associate the event-handling method with the
// document's PrintPage event.
this.docToPrint.PrintPage += new

System.Drawing.Printing.PrintPageEventHandler(docToPrint_PrintPage);

}

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

// Insert code to render the page here.
// This code will be called when the control is drawn.

// The following code will render a simple
// message on the document in the control.
string text = "In docToPrint_PrintPage method.";
System.Drawing.Font printFont new Font("Arial", 35, FontStyle.Regular);

e.Graphics.DrawString(text, printFont,
Brushes.Black, 10, 10);
}

Como se ve la única forma de mostrar el documento es cuando se carga
el control con this.Controls.Add().
No funciona ni pasando el PrintPreviewControl1 ya formateado y creado
a un PrintPreviewControl que este visible.

Espero que este ejemplo le sea de utilidad a otros y si alguien sabe
como cargar un Documento con el control visible que lo ponga aquí y
así todos salimos beneficiados por lo pronto no me queda otra que
intentar las soluciones que Alberto nos presenta.

Muchas gracias Alberto por tu amable ayuda.

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida