none
Evitar la Impresión de una pagina entre varias RRS feed

  • Pregunta

  • Hola desarrolladores, tengo el siguiente caso espero me puedan instruir.

    Tengo la impresión de varias paginas en el evento de impresión, "object sender, PrintPageEventArgs e" dentro del evento valido, si tiene marcado para envio de correo, pues envío un correo y la idea es no imprimir la pagina, saben si existe algún comando como continue en los foreach o algo así para las impresiones?

    lunes, 3 de diciembre de 2018 21:22

Respuestas

  • Ah, no, entonces lo había entendido mal. Creí que no querías imprimir absolutamente nada cuando estaba marcado el envío por correo. Pero si lo que ocurre es que tienes 100 facturas y solo quieres imprimir 98, entonces donde tienes que hacer el control es en el evento PrintPage, que cuando vaya seleccionando facturas para imprimir únicamente debe tomar las 98 que se imprimen, y saltarse las otras dos.

    Yo recomendaría hacer esa selección antes de lanzar el Print. La razón es que si por casualidad se da el caso de que todas están marcadas para envío por correo, entonces sería dificilísimo evitar la impresión de una página en blanco desde el PrintPage. Por ejemplo, puedes hacer algo como esto:

    List<Factura> facturasAImprimir = todasLasFacturas.Where(f => !f.EnviarPrCorreo)
    if (facturasAImprimir.Any())
    {
        if (impDialog.ShowDialog() == DialogResult.OK && )
        {
            _documento.Print();
        }
    }

    Y, como es lógico, dentro del PrintPage solo imprimes las facturas que haya en "facturasAImprimir", no las que haya en "todasLasFacturas".

    Obviamente lo anterior es solo un ejemplo, donde yo he puesto la clase Factura y la colección todasLasFacturas lo cambiarás por la clase y colección que realmente esté usando tu programa, lo mismo que la propiedad EnviarPorCorreo que me acabo de inventar.

    • Marcado como respuesta CrissR martes, 4 de diciembre de 2018 12:40
    martes, 4 de diciembre de 2018 7:32
    Moderador

Todas las respuestas

  • Dentro del evento PrintPage lo que puedes controlar es si quieres imprimir más páginas después de la primera. Pero si no quieres imprimir ninguna en absoluto, entonces lo ideal es que simplemente pongas el "if" para controlar la condición en donde tengas metido el PrintDocument.Print. Sencillamente, no llames al .Print si no se cumple la condición necesaria para imprimir. Es mejor eso que tratarlo de controlar desde dentro del evento PrintPage.
    lunes, 3 de diciembre de 2018 21:27
    Moderador
  • Dentro del evento PrintPage lo que puedes controlar es si quieres imprimir más páginas después de la primera. Pero si no quieres imprimir ninguna en absoluto, entonces lo ideal es que simplemente pongas el "if" para controlar la condición en donde tengas metido el PrintDocument.Print. Sencillamente, no llames al .Print si no se cumple la condición necesaria para imprimir. Es mejor eso que tratarlo de controlar desde dentro del evento PrintPage.

    Hola Alberto, muchas gracias por responder. Creo que me perdí un poc, haber si te entendí.

    Tengo una lista (digamos que con 100 facturas), voy imprimiendo las facturas pero resulta que alguna esta marcada para envío por correo y no por impresión. Entonces tengo un if donde valido si esta la marca si es asi quiero hacerle un continue. Cosa que no he logrado.

    Antes de eso tengo otra porcion de codigo asi

    if (impDialog.ShowDialog() == DialogResult.OK)
                {
                    _documento.Print();
                }
    En esa parte es donde dices que debo hacer el proceso?? antes de enviar a imprimir?

    lunes, 3 de diciembre de 2018 21:44
  • Ah, no, entonces lo había entendido mal. Creí que no querías imprimir absolutamente nada cuando estaba marcado el envío por correo. Pero si lo que ocurre es que tienes 100 facturas y solo quieres imprimir 98, entonces donde tienes que hacer el control es en el evento PrintPage, que cuando vaya seleccionando facturas para imprimir únicamente debe tomar las 98 que se imprimen, y saltarse las otras dos.

    Yo recomendaría hacer esa selección antes de lanzar el Print. La razón es que si por casualidad se da el caso de que todas están marcadas para envío por correo, entonces sería dificilísimo evitar la impresión de una página en blanco desde el PrintPage. Por ejemplo, puedes hacer algo como esto:

    List<Factura> facturasAImprimir = todasLasFacturas.Where(f => !f.EnviarPrCorreo)
    if (facturasAImprimir.Any())
    {
        if (impDialog.ShowDialog() == DialogResult.OK && )
        {
            _documento.Print();
        }
    }

    Y, como es lógico, dentro del PrintPage solo imprimes las facturas que haya en "facturasAImprimir", no las que haya en "todasLasFacturas".

    Obviamente lo anterior es solo un ejemplo, donde yo he puesto la clase Factura y la colección todasLasFacturas lo cambiarás por la clase y colección que realmente esté usando tu programa, lo mismo que la propiedad EnviarPorCorreo que me acabo de inventar.

    • Marcado como respuesta CrissR martes, 4 de diciembre de 2018 12:40
    martes, 4 de diciembre de 2018 7:32
    Moderador
  • Ah, no, entonces lo había entendido mal. Creí que no querías imprimir absolutamente nada cuando estaba marcado el envío por correo. Pero si lo que ocurre es que tienes 100 facturas y solo quieres imprimir 98, entonces donde tienes que hacer el control es en el evento PrintPage, que cuando vaya seleccionando facturas para imprimir únicamente debe tomar las 98 que se imprimen, y saltarse las otras dos.

    Yo recomendaría hacer esa selección antes de lanzar el Print. La razón es que si por casualidad se da el caso de que todas están marcadas para envío por correo, entonces sería dificilísimo evitar la impresión de una página en blanco desde el PrintPage. Por ejemplo, puedes hacer algo como esto:

    List<Factura> facturasAImprimir = todasLasFacturas.Where(f => !f.EnviarPrCorreo)
    if (facturasAImprimir.Any())
    {
        if (impDialog.ShowDialog() == DialogResult.OK && )
        {
            _documento.Print();
        }
    }

    Y, como es lógico, dentro del PrintPage solo imprimes las facturas que haya en "facturasAImprimir", no las que haya en "todasLasFacturas".

    Obviamente lo anterior es solo un ejemplo, donde yo he puesto la clase Factura y la colección todasLasFacturas lo cambiarás por la clase y colección que realmente esté usando tu programa, lo mismo que la propiedad EnviarPorCorreo que me acabo de inventar.

    Muchas Gracias, súper clara la respuesta. Haré el cambio. Feliz Día.
    martes, 4 de diciembre de 2018 12:41