none
Imprimir formulario c#

    Question

  • Buenos Dias

    Estoy desarrollando un formulario que crea una serie de controles en tiempo de ejecucion y los añade al formulario,

    la pregunta es:

    Como podría imprimir lo que esta en el  formulario teniendo en cuenta que se generan varios control y debido a la cantidad quedan ocultos y se requieren imprimir y lo metos convencionales imprimen  la parte visible unicamente segundo como ajustaría el tamaño de la impresión para que quedara en el contenido en una hoja completa y tercero como hacer para que imprima unicamente unos controles y los otros queden ocultos

    Agradezco su colaboracion


    Hhendrix2012 Programattion OK

    Monday, September 02, 2013 2:42 PM

Answers

  • Hola

    Como podría imprimir lo que esta en el  formulario

    1 . este metodo imprime todo el formulario

    2 .agrega un control  PrintDocument

    3. en el evento printpage del Printdocument escribe esto

      Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            e.Graphics.DrawImage(memoryImage, 0, 0)
        End Sub

    4. en tu boton para imprimir

      Private Sub BotonImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotonImprimir.Click
            CapturarPantalla()
            PrintDocument1.Print()
        End Sub

    5. Agrega este codigo ta l cual

     Private memoryImage As Bitmap

        <System.Runtime.InteropServices.DllImport("gdi32.dll")> _
        Public Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, _
         ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Long
        End Function

        Private Sub CapturarPantalla()
            Dim mygraphics As Graphics = Me.CreateGraphics()
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            Dim dc1 As IntPtr = mygraphics.GetHdc()
            Dim dc2 As IntPtr = memoryGraphics.GetHdc()
            BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
            mygraphics.ReleaseHdc(dc1)
            memoryGraphics.ReleaseHdc(dc2)

        End Sub

    como ajustaría el tamaño de la impresión

    Bueno siempre que imprimo un formulario , lo diseño para que estequede dentro del area de impresion es decir lo diseño  lo mas parecido a lo que quiero ver en la impresion , ya que no e encotrado forma de imprimirlo horizontalmente o cambiar otras propiedades al momento de imprimirlo

    tercero como hacer para que imprima unicamente unos controles y los otros queden ocultos

    Para que ocultes los controles que no quieres ver en tu Impresion utiliza la propiedad Visible del control  ejemplo

    TextBox1.Visible= False   , asi solo tienes que cambiar esta propiedad antes de mandar a imprimir tu formulario


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    • Marked as answer by Hhendrix2012 Monday, September 02, 2013 4:46 PM
    Monday, September 02, 2013 3:02 PM
  • hola

    quizas algo como esto

    How to: Print a Windows Form

    o sea tomando un print screen

    ---

    aunque tambien se podria usar la clase PrintForm, pero para ello requieres el PowerPack de vb.net

    saludods


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marked as answer by Hhendrix2012 Monday, September 02, 2013 4:46 PM
    Monday, September 02, 2013 3:03 PM

All replies

  • Hola

    Como podría imprimir lo que esta en el  formulario

    1 . este metodo imprime todo el formulario

    2 .agrega un control  PrintDocument

    3. en el evento printpage del Printdocument escribe esto

      Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            e.Graphics.DrawImage(memoryImage, 0, 0)
        End Sub

    4. en tu boton para imprimir

      Private Sub BotonImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BotonImprimir.Click
            CapturarPantalla()
            PrintDocument1.Print()
        End Sub

    5. Agrega este codigo ta l cual

     Private memoryImage As Bitmap

        <System.Runtime.InteropServices.DllImport("gdi32.dll")> _
        Public Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, _
         ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Long
        End Function

        Private Sub CapturarPantalla()
            Dim mygraphics As Graphics = Me.CreateGraphics()
            Dim s As Size = Me.Size
            memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
            Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
            Dim dc1 As IntPtr = mygraphics.GetHdc()
            Dim dc2 As IntPtr = memoryGraphics.GetHdc()
            BitBlt(dc2, 0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, dc1, 0, 0, 13369376)
            mygraphics.ReleaseHdc(dc1)
            memoryGraphics.ReleaseHdc(dc2)

        End Sub

    como ajustaría el tamaño de la impresión

    Bueno siempre que imprimo un formulario , lo diseño para que estequede dentro del area de impresion es decir lo diseño  lo mas parecido a lo que quiero ver en la impresion , ya que no e encotrado forma de imprimirlo horizontalmente o cambiar otras propiedades al momento de imprimirlo

    tercero como hacer para que imprima unicamente unos controles y los otros queden ocultos

    Para que ocultes los controles que no quieres ver en tu Impresion utiliza la propiedad Visible del control  ejemplo

    TextBox1.Visible= False   , asi solo tienes que cambiar esta propiedad antes de mandar a imprimir tu formulario


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    • Marked as answer by Hhendrix2012 Monday, September 02, 2013 4:46 PM
    Monday, September 02, 2013 3:02 PM
  • hola

    quizas algo como esto

    How to: Print a Windows Form

    o sea tomando un print screen

    ---

    aunque tambien se podria usar la clase PrintForm, pero para ello requieres el PowerPack de vb.net

    saludods


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marked as answer by Hhendrix2012 Monday, September 02, 2013 4:46 PM
    Monday, September 02, 2013 3:03 PM
  • Gracias por la respuesta estudiare el metodo.

    Hhendrix2012 Programattion OK

    Monday, September 02, 2013 4:46 PM
  • Gracias por la respuesta

    Hhendrix2012 Programattion OK

    Monday, September 02, 2013 4:46 PM