Impression d'une forme

f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013 - 6 juin 2012 à 19:48
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013 - 12 juin 2012 à 17:34
bonjour,
je veux imprimer les informations contenues dans ma forme et je me demande s'il y a une méthode plus simple que celle avec 'crystalreport' car je l'ai utilisé avant mais ça était il y a longtemps que j'ai oublié comment l'utilisé. De plus je me souvient que j'avait un problème à avoir cet outil tout comme maintenant. Je ne dispose pas de 'crystalreport' dans ma 'toolbox' et je ne sais pas comment j'ai remédié ce problème, d'où j'espère que j'aurais une solution plus facile.Juste à titre d'information j'ai pas de base de données, les informations seront écrites dans la forme au moment de l'exécution.
merci d'avance pour votre aide

5 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 juin 2012 à 20:16
Salut

je veux imprimer les informations contenues dans ma forme


un printform ?
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
6 juin 2012 à 20:58
une class qui imprime un formulaire ou un
control

Imports System.Drawing.Printing
Public Class ClassImpression
    Private myimage As Bitmap
    Private thectrl As Control

    Private Function Capturectrl(ByVal ctrl As Control) As Bitmap
        Dim memoryImage As Bitmap
        Dim memoryGraphics As Graphics
        memoryImage = Nothing
        Dim mygraphics As Graphics = ctrl.CreateGraphics()
        Dim s As Size = ctrl.Size
        If TypeOf ctrl Is Form And DirectCast(ctrl, Form).FormBorderStyle <> FormBorderStyle.None Then
            memoryImage = New Bitmap(s.Width - 10, s.Height - (SystemInformation.FrameBorderSize.Width + 6 + SystemInformation.CaptionHeight), mygraphics)
            memoryGraphics = Graphics.FromImage(memoryImage)
            memoryGraphics.CopyFromScreen(0, (SystemInformation.FrameBorderSize.Width + 0 + SystemInformation.CaptionHeight), 0, 0, New Size(memoryImage.Width, memoryImage.Height), CopyPixelOperation.SourceCopy)
        Else
            memoryImage = New Bitmap(s.Width, s.Height, mygraphics)
            memoryGraphics = Graphics.FromImage(memoryImage)
            memoryGraphics.CopyFromScreen(ctrl.Left, ctrl.Top, 0, 0, New Size(memoryImage.Width, memoryImage.Height), CopyPixelOperation.SourceCopy)
        End If
        Return memoryImage
    End Function
    Public Function GetPreview() As Bitmap
        Return Capturectrl(thectrl)
    End Function
    Public Sub printdoc()
        Try
            Dim prtd As New PrintDialog

            'document à imprimer
            Dim doc As New PrintDocument
            myimage = Capturectrl(thectrl)
            AddHandler doc.PrintPage, AddressOf printform
            'paramètres de page
            Dim ps As New PageSettings
            ps.Landscape = False
            doc.DefaultPageSettings = ps
            'indique à la prévisualisation le document à montrer
            prtd.Document = doc
            If prtd.ShowDialog = DialogResult.OK Then
                prtd.Document.Print()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub printform(ByVal sender As Object, ByVal e As PrintPageEventArgs)
        Try
            e.Graphics.DrawImage(myimage, 0, 0)
            e.HasMorePages = False
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Public Sub New(ByVal ctrl As Control)
        thectrl = ctrl
    End Sub
End Class


pour utiliser
pour imprimer la form
Dim printer As New ClassImpression(Me)
printer.printdoc()

tu peux aussi sauvegarder ta form comme fichier
jpeg ou un formmat bitmap

Dim saveimage As Bitmap
 Dim p As New ClassImpression(Me)
  saveimage = p.GetPreview
  If SaveFiledialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
            saveimage.Save(SaveFiledialog1.FileName, ImageFormat.Jpeg)
        End If


tu peux aussi imprimer seulement un control dans ta form par ex si tu as un listbox
Dim printer As New ClassImpression(listbox1)
printer.printdoc()
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
7 juin 2012 à 19:58
merci,
mais j'ai déjà essaillé avec ce code et ça marche pas convenablement car il prend une capture écran et ce n'ai pas ce que je veux. je veux seulement extraire les information dedans(les label et les textes des textbox) pour les imprimer.J'ai essaillé comme même avec la solution d'imprimer seulement les contrôles dont j'avais besoin et encore ça marche pas car j'aurais l'erreur suivante:
"Unable to cast object of type'System.Windows.Forms.Textbox' to type 'System.Windows.Forms.Form'

Avez vous une solution?????????!!
0
debutemps Messages postés 34 Date d'inscription jeudi 7 juin 2012 Statut Membre Dernière intervention 14 juin 2012 1
9 juin 2012 à 10:49
Bonjour,
si c'est juste le texte que tu veux essaie ça
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each Control In Me.Controls
            MsgBox(Control.text)
        Next
    End Sub



Lydie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
12 juin 2012 à 17:34
merci
0
Rejoignez-nous