none
Uso del Control PrintForm RRS feed

  • Pregunta

  • Hola a todos.

    Estoy intentando usar el Control PrintForm que viene del "Visual Base Power Packs" en un formulario Windows Forms con Visual Studio 2008 y C#, y tanto cuando imprimes como cuando haces un preview el formulario sale partido por la mitad.

    Al método de impresión "this.printForm1.Print(this, ....)" se le pueden indicar diferentes estilos de impresión, léase (CompatibleModeClientAreaOnly, Scrollable, ...), pero en todos ellos funciona igual.

    Entiendo que tiene que haber alguna forma de indicarle coordenadas o preferencias pero no se como se hace.

    Si alguien tiene alguna idea se lo agradezco.

    Saludos.

    miércoles, 31 de agosto de 2011 13:55

Respuestas

  • Hola Joanca,

    El problema es claro 959 es mayor que la anchura de la pagina, por defecto la propiedad Papersize está establecido a A4 y para este tamaño la anchura es de 827, esto lo puedes consultar en 

    PrinterSettings.DefaultPageSettings.PaperSize.Width.

     

    Puedes hacer lo siguiente, que es cambiar la orientación del papel.

    this.printForm1.PrinterSettings.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 100, 100);
                Rectangle rectangle = this.printForm1.PrinterSettings.DefaultPageSettings.Bounds;
                if (rectangle.Width < this.Width)
                    this.printForm1.PrinterSettings.DefaultPageSettings.Landscape = true;
                this.printForm1.Print(this, Microsoft.VisualBasic.PowerPacks.Printing.PrintForm.PrintOption.Scrollable);
    

    Saludos


    phurtado
    • Marcado como respuesta Joanca lunes, 5 de septiembre de 2011 8:42
    lunes, 5 de septiembre de 2011 6:57

Todas las respuestas

  • Hola @Joanca,

    Mira la nota que hay en la documentación.

    http://msdn.microsoft.com/es-es/library/bb690944.aspx.

     

     y tanto cuando imprimes como cuando haces un preview el formulario sale partido por la mitad

    Entiendo que el salir cortado por la mitad es Vertical. Juega con los margenes de esta forma.

    this.printForm1.PrinterSettings.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 100, 100);
    


    Saludos,


    phurtado
    domingo, 4 de septiembre de 2011 17:33
  • Hola Pedro buenos días.

    Ya había probado lo comentado en la URL que me has detallado en donde indica de forma muy clara que con la opción "Scrollable" debería de funcionar, y ahora además lo he intercalado con el tema de los Settings, y la verdad es que me funciona igual ponga la opción que ponga, ya sea Scrollable o area Client, en fin, con cualquiera que pruebe sale el formulario cortado.

    El Size que tengo es "959; 605" pero entiendo que debería de ser igual.

    Gracias nuevamente por tu ayuda.

    Saludos.

    lunes, 5 de septiembre de 2011 5:34
  • Hola Joanca,

    El problema es claro 959 es mayor que la anchura de la pagina, por defecto la propiedad Papersize está establecido a A4 y para este tamaño la anchura es de 827, esto lo puedes consultar en 

    PrinterSettings.DefaultPageSettings.PaperSize.Width.

     

    Puedes hacer lo siguiente, que es cambiar la orientación del papel.

    this.printForm1.PrinterSettings.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 100, 100);
                Rectangle rectangle = this.printForm1.PrinterSettings.DefaultPageSettings.Bounds;
                if (rectangle.Width < this.Width)
                    this.printForm1.PrinterSettings.DefaultPageSettings.Landscape = true;
                this.printForm1.Print(this, Microsoft.VisualBasic.PowerPacks.Printing.PrintForm.PrintOption.Scrollable);
    

    Saludos


    phurtado
    • Marcado como respuesta Joanca lunes, 5 de septiembre de 2011 8:42
    lunes, 5 de septiembre de 2011 6:57
  • Hola Pedro.

    Funciona Ok, pero el único pego es que lo coloca no centrado en la página de salida sino en el lado izquierdo.

    Sabes como podría centrarlo.

    Gracias y Saludos.

    lunes, 5 de septiembre de 2011 7:49
  • Hola Joanca,
    Si es por lo siguiente, por probar yo te pase lo siguiente.
    this.printForm1.PrinterSettings.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 100, 100);
    Comenta esa linea.
    Saludos,

    phurtado
    lunes, 5 de septiembre de 2011 8:08