Imprimer à l'aide PrintDocument et PrintDialog

Ceci est destiné à être un très simple et bref dans Visual Basic. NET . Facile à comprendre rapidement que cela fonctionne et à court (avec très peu de code), de sorte que rien ne nous empêche quand mettre notre touche personnelle. Les programmeurs sont très créatifs et j'ai passé de nombreuses fois, j'ai rencontré très complexe et remplie d'exemples de code, que j'ai eu à disséquer et analyser les pièces à comprendre son fonctionnement. Donc, j'essaie de mettre tout mon poste dans des exemples concrets, faciles à utiliser avec juste copier, coller et faire quelques contrôles mimina de configuration.

Nous avons besoin de:

Une Winform (Form1), un contrôle PrintDocument (PrintDocument1), un PrintDialog (PrintDialog1), une zone de texte (TextBox1) et un bouton (Button1). Le formulaire doit ressembler à cette image:

Copiez le code suivant dans l'événement Click de Button1


 Ensuite, si PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print ()
 End If

qu'il ne se ouvrir la boîte de dialogue pour sélectionner l'imprimante, puis passe toute la configuration passe de l'objet PrintDocument sélectionné, puis dit que vous imprimez. Qu'est ce qui déclenche l'événement PrintDocument PrintPage.

Maintenant, le PrintDocument1 objet double-cliquez et collez le code suivant


 e.Graphics.DrawString (TextBox1.Text, une nouvelle police ("Verdana", 18, FontStyle.BOLD) Brushes.Black, 10, 10)

 Pour i As Integer = 1 To 10
 e.Graphics.DrawString («ligne Exemple:" & i, une nouvelle police ("Tahoma", 10, FontStyle.BOLD) Brushes.Black, 10, 20 + (i * 30))
 Prochain

Lorsque vous exécutez cette imprime le contenu de la boîte comme le titre de la page et une dizaine de lignes en utilisant l'échantillon différent et furnte et la taille. Le résultat doit ressembler à l'image suivante:

plus d'informations sur les contrôles ...

PrintDialog, composant (Windows Forms)

Le composant PrintDialog de Windows Forms est une boîte de dialogue préconfigurée est utilisé pour sélectionner une imprimante, choisir les pages à imprimer et à déterminer d'autres paramètres liés à l'impression dans des applications Windows. Utilisez-le comme une solution simple pour sélectionner les paramètres d'impression ou se rapportant à l'imprimante, au lieu de mettre en place une boîte de dialogue lui-même. Vous pouvez permettre aux utilisateurs d'imprimer les différentes parties de leurs documents: imprimer tout, imprimez la plage spécifiée de pages ou d'imprimer une sélection. En s'appuyant sur Windows les dialogues standards, de créer des applications dont les fonctionnalités de base est immédiatement familier pour les utilisateurs.

Composant PrintDocument (Windows Forms)

Le composant PrintDocument des Windows Forms est utilisé pour définir les propriétés qui décrivent les éléments à imprimer, puis imprimer le document en applications basées sur Windows.

84 Responses to "Imprimer à l'aide PrintDocument et PrintDialog"

  1. ZOLRAK.MX dit:

    Eh bien comme je l'ai fait le tour du poste et personne n'a répondu comme il le fait sur d'imprimer plus de pages, je me suis donné la tâche d'enquêter sur d'autres sites et j'ai trouvé un code mais ce milieu complexe pour enterlo facilement de sorte qu'il modique l'exemple qui sont le moteur ici, donc il ya deux cents mes et j'espère et je comprends okas ;)

    «Cette variable doit être publié
    Ligne As Integer = 1

    PrintDocument1_PrintPage Private Sub (sender System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Poignées PrintDocument1.PrintPage

    «Nous définissons le type de police et plus
    Source As Police New ("Arial", 10)
    «Nous définissons que la position va commencer l'impression
    La position As Integer = 20
    «Le comte de lignes est imprimé
    Lineaimpresa As Integer = 0
    'Variable pour voir quand vous prenez un saut de page
    As Boolean = False salto_pagina
    'Variable pour désigner le nombre de lignes à imprimer par feuille
    NroLineasPagina As Integer = 70

    Pour i = ligne à 150
    e.Graphics.DrawString («ligne Exemple:" & ligne, Source, Brushes.Black, 10, position)
    la position + = 15
    ligne + = 1
    lineaimpresa + = une
    Ensuite, si lineaimpresa = NroLineasPagina
    salto_pagina = True
    Exit For
    End If
    Prochain

    Si salto_pagina = True Then
    e.HasMorePages = True
    D'autre
    e.HasMorePages = False
    End If
    End Sub

    Eh bien, j'espère et les servir et leur besoin de s'adapter au revoir Okas

  2. diego dit:

    que je peux imprimer

  3. renestimpy dit:

    Imports System.IO

    FrmDesCaratula Public Class

    StringToPrint As String privé

    Private Sub frmDesCaratula_Load (expéditeur As Object, e As System.EventArgs) Handles MyBase.Load
    Me.MdiParent = mdiPrincipal
    End Sub

    Private Sub Button1_Click (sender As Object, e As System.EventArgs) Handles Button1.Click
    Ensuite, si ptdConfiguracion.ShowDialog = Windows.Forms.DialogResult.OK
    ptdDocumento.PrinterSettings = ptdConfiguracion.PrinterSettings
    ptdDocumento.Print ()
    End If
    End Sub

    Private Sub PrintDocument1_PrintPage (expéditeur As Object, e As System.Drawing.Printing.PrintPageEventArgs) Poignées ptdDocumento.PrintPage

    e.Graphics.DrawString (TextBox1.Text, une nouvelle police ("Verdana", 18, FontStyle.BOLD) Brushes.Black, 10, 10)
    Pour i As Integer = 1 To 10
    e.Graphics.DrawString («ligne Exemple:" & i, une nouvelle police ("Tahoma", 10, FontStyle.BOLD) Brushes.Black, 10, 20 + (i * 30))
    Prochain

    '----- All Printing UN DOCUMENT

    As Integer = 0 charactersOnPage
    As Integer = 0 linesPerPage

    'Définit la valeur du nombre de caractères à charactersOnPage
    «Ce sera l'ajustement de stringToPrint Dans les limites de la page.
    'E.Graphics.MeasureString (stringToPrint, Me.Font, e.MarginBounds.Size, _
    «StringFormat.GenericTypographic, charactersOnPage, linesPerPage)

    «Dessine la chaîne dans les limites des de la page
    'E.Graphics.DrawString (stringToPrint, Me.Font, Brushes.Black, _
    «E.MarginBounds, StringFormat.GenericTypographic)

    «Enlever la partie de la chaîne qui a été imprimé.
    «StringToPrint = stringToPrint.Substring (charactersOnPage)

    Vérifier pour voir si d'autres pages doivent être imprimées.
    '= E.HasMorePages stringToPrint.Length> 0

    End Sub

    Private Sub Button2_Click (expéditeur As Object, e As System.EventArgs) Handles Button2.Click
    ReadFile ()
    ptdDocumento.Print ()
    End Sub

    Private Sub ReadFile ()
    DocName As String = "index.html"
    DocPath As String = "G: \"
    ptdDocumento.DocumentName = docName
    Flux As New FileStream (DocPath + docName, FileMode.Open)
    Essayer
    Dim lecteur As New StreamReader (stream)
    Essayer
    reader.ReadToEnd stringToPrint = ()
    Enfin
    reader.Dispose ()
    End Try
    Enfin
    stream.Dispose ()
    End Try
    End Sub

    Private Sub Button3_Click (expéditeur As Object, e As System.EventArgs) Handles Button3.Click
    ppdVista.Document = ptdDocumento
    ppdVista.ShowDialog ()
    End Sub

    End Class

    Cela a fonctionné pour moi, vous avez besoin d'une texbox: TextBox1
    PrintDocument: ptdDocumento
    PrintPreviewControl: ppdVista
    PrintDialog: ptdConfiguracion

  4. Kevin Ramirez dit:

    Intéressant article, mais se demandent comment nous devons agir plus les environnements professionnels tels que l'impression de billets, reçus, factures ou chèques de contrôle si l'imprimante est en ligne et a papier ou impreison mido de l'impression a été arrêté pour les quelques erreurs.

    Enregistrer hacerca de ce que vous mentionnez comme je l'ai essayé à plusieurs reprises, sans succès, cela et n'ai rien trouvé pour résoudre ce problème.

    Salutations.
    Atte. Kevin Ramirez

  5. Franco C. Sanchez dit:

    Bonjour, a voulu savoir si vous aviez des tutoriels afin que vous puissiez imprimer le contenu d'un datagridview parce que tout je trouve sur internet est un code beaucoup plus et en mesure d'exécuter quoi que ce soit hein!.
    Je vous serais très reconnaissant si vous aviez des informations à ce sujet.

    Cordialement

  6. Manuel dit:

    Cher, j'ai été la programmation de plus de 10 ans chez Microsoft, est passé par VB6 et maintenant je suis avec VS2010.
    Je n'ai pas trouvé un outil plus souple PrintDocument pour les rapports, il n'y a rien qu'il ne pouvait pas faire.

    Si vous avez des questions s'il vous plaît contactez-moi.
    ce qui concerne

    • Franco C. Sanchez dit:

      Bonjour Manuel, je passerais un e-mail de contact pour être plus en ligne et ainsi de me donner un coup de main?
      Merci beaucoup
      J'ai la mienne quitter
      francocsanchez@gmail.com

      Il est très nécessaire: T

    • Kevin Ramirez dit:

      Eh bien Manuel agredece vous beaucoup pour la réponse que je vais me commander comme un e-mail ou tout contact me facilitaras parce que j'ai environ six mois dans cette.

      Et je pense que l'une d'une certaine orientation professionnelle que je pourrais utiliser.

      Je laisse mon mail.
      kevinramirez92@hotmail.com

      Salutations.
      Atte. Kevin Ramirez.

    • Franco dit:

      Manuel J'ai besoin d'aide sur la façon d'imprimer le contenu d'un datagridview!.
      Pourriez-vous me donner un coup de main?
      francocsanchez@gmail.com

    • Luis Cepeda dit:

      Salutations.
      Q est est que mon courrier parfois juste besoin d'aide pour l'impression automatique en Visual Basic 2010.
      Luis_Cepedaf@hotmail.com

    • San Martin Franco dit:

      Certains bibliothèque spécifique pour charger les valeurs textbox dans un document Excel et les dimensions fixé en fonction de l'immpresora.

      Merci

  7. Sa Edgar dit:

    Salut désolé j'ai besoin d'aide urgente Ce qui arrive est que je veux savoir comment je peux imprimer le contenu d panel dans lequel j'ai une image (plus grande que le panneau à la manipulation k scrollBar) et une zone de texte ... quelques-uns tout à partir d'un PrintDocument. Salut désolé j'ai besoin d'aide urgente Ce qui arrive est que je veux savoir comment je peux imprimer le contenu d panel dans lequel j'ai une image (plus grande que le panneau à la manipulation k scrollBar) et une zone de texte ... quelques-uns tout à partir d'un PrintDocument. Salut désolé j'ai besoin d'aide urgente Ce qui arrive est que je veux savoir comment je peux imprimer le contenu d panel dans lequel j'ai une image (plus grande que le panneau à la manipulation k scrollBar) et une zone de texte ... quelques-uns tout à partir d'un PrintDocument.

  8. Torres dit:

    je vous remercie beaucoup, le premier exemple simple qui fonctionne

  9. Alberto dit:

    Merci. La clarté et la rigueur. Grande. Maintenant je dois faire les cycles et les filtres nécessaires pour imprimer les enregistrements dans une base de données, mais que cette très clairement comment exposés que vous avez trouvé ailleurs très faiblement exposés. Vous devez être un grand professeur.

  10. yack dit:

    J'ai servi votre exemple, si j'ai une question comme je peux de alprograma cirle impression à la position droite de mon e-mail est yack7raro@gmail.com si lagon poersona connu sous le nom

  11. Joe dit:

    Le poste est excellent, j'ai besoin de quelques détails pour terminer l'impression mon label, dans ce cas le premier point est d'imprimer ce qu'il ya dans la boîte, et la seconde pour adapter la position de l'impression, des salutations et vous remercie beaucoup ...

    • Joe dit:

      PS Le texte de l'impression sur la première zone de texte ci-dessous le code à barres codes-barres doivent être imprimés en caractères normaux est la partie qui ne précise pas, merci ...

Commenter