none
Imprimir form RRS feed

  • Pergunta

  • Boas 

     

    Que código utilizo para num botão imprimir o form, tal e qual como estou a ve-lo?

    Carrego no form abre a caixa de dialogo das impressoras, escolho a impressora e voila :)

    Tenho que utilizar o printdialog né?

     

    Cumps

    terça-feira, 30 de agosto de 2011 08:07

Respostas

  • Olá Flashed

    Primeiramente no designer do form vc deve arrastar um componente PrintDialog e um PrintDocument.

    Feito isso o código para imprimir é esse ai:

    Public Class Form1
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(GetCurrentWindows, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    


    O segredo é voce capturar a area de trabalho com as coordenadas do Form para um bitmap

    Para que o form seja capturado corretamente nao deve ter nenhuma janela ou objeto na frente, pois irá aparecer na imagem.


    Visual Studio 2010(Vb.Net)
    terça-feira, 30 de agosto de 2011 11:59
  • Para a janela "Printing" nao aparecer basta capturar a imagem do form antes de imprimir

    Public Class Form1
      Private formbitmap As Bitmap
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        formbitmap = GetCurrentWindows()
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(formbitmap, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Me.Show()
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    


    E para mudar a orientação do papel(Impressão vertical ou horizontal) o código é o seguinte:

    Public Class Form1
      Private formbitmap As Bitmap
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        formbitmap = GetCurrentWindows()
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          'para mudar a orientação do papel, vertical horizontal só adicione esta linha de codigo
          PrintDocument1.PrinterSettings.DefaultPageSettings.Landscape = True
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(formbitmap, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Me.Show()
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    



    Visual Studio 2010(Vb.Net)
    terça-feira, 30 de agosto de 2011 13:22

Todas as Respostas

  • Encontrei este código...mas ele imprime uma pagina em branco!

     

    Como fazo para imprimir o form?

     

    Private Sub buttonPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonPrint.Click
        Dim printDialog1 As PrintDialog = New PrintDialog
        printDialog1.Document = PrintDocument1
        Dim result As DialogResult = printDialog1.ShowDialog
        If (result = DialogResult.OK) Then
          PrintDocument1.Print()
        End If
    

    Cummps

    terça-feira, 30 de agosto de 2011 08:21
  • Olá Flashed

    Primeiramente no designer do form vc deve arrastar um componente PrintDialog e um PrintDocument.

    Feito isso o código para imprimir é esse ai:

    Public Class Form1
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(GetCurrentWindows, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    


    O segredo é voce capturar a area de trabalho com as coordenadas do Form para um bitmap

    Para que o form seja capturado corretamente nao deve ter nenhuma janela ou objeto na frente, pois irá aparecer na imagem.


    Visual Studio 2010(Vb.Net)
    terça-feira, 30 de agosto de 2011 11:59
  • Funcionou :)

    Se eu quiser que o form seja impresso numa pagina horizontal? como defino isso no código?

     

    Nãp dá para tirar a mensagem de printing? Pois ela fica em frente do form...acontece o que voce falou!

     

    Cumps

    Obrigado

    terça-feira, 30 de agosto de 2011 12:57
  • Para a janela "Printing" nao aparecer basta capturar a imagem do form antes de imprimir

    Public Class Form1
      Private formbitmap As Bitmap
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        formbitmap = GetCurrentWindows()
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(formbitmap, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Me.Show()
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    


    E para mudar a orientação do papel(Impressão vertical ou horizontal) o código é o seguinte:

    Public Class Form1
      Private formbitmap As Bitmap
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        formbitmap = GetCurrentWindows()
        If PrintDialog1.ShowDialog <> Windows.Forms.DialogResult.Cancel Then
          PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
          'para mudar a orientação do papel, vertical horizontal só adicione esta linha de codigo
          PrintDocument1.PrinterSettings.DefaultPageSettings.Landscape = True
          PrintDocument1.Print()
        End If
      End Sub
      Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'é aqui no evento PrintPage do objeto PrintDocument que deve ser tratado da impressão
        'a linha de codigo abaixo serve para imprimir a imagem do form
        e.Graphics.DrawImage(formbitmap, New Point(10, 10))
      End Sub
      Private Function GetCurrentWindows() As Bitmap
        'esta função serve para criar a imagem do form fazendo uma captura da tela
        Me.Show()
        Dim bp As New Bitmap(Me.Width, Me.Height)
        Dim gf As Graphics = Graphics.FromImage(bp)
        gf.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, Me.Size)
        Return bp
      End Function
    End Class
    



    Visual Studio 2010(Vb.Net)
    terça-feira, 30 de agosto de 2011 13:22
  • Alguns links que talvez lhe sejam uteis, sobre impressão:

    http://www.macoratti.net/vbn_prn2.htm

    http://www.macoratti.net/vbn_prn.htm

    http://www.macoratti.net/08/11/vbn_vimp.htm

    Foi lendo estes artigos que aprendi a imprimir no vb.net :)


    Visual Studio 2010(Vb.Net)
    • Sugerido como Resposta Herbert Lausmann terça-feira, 30 de agosto de 2011 14:20
    • Não Sugerido como Resposta Herbert Lausmann sexta-feira, 2 de setembro de 2011 13:43
    terça-feira, 30 de agosto de 2011 13:25
  • funcionou beleza :)

     

    Mostra os textbox e tudo :)

     

    Muito obrigado :)

    terça-feira, 30 de agosto de 2011 14:18