Tiskanje z uporabo PrintDocument in PrintDialog

To naj bi bil zelo preprost in kratek v Visual Basic. net . Enostavno hitro razumeli, da deluje in kratke (z zelo malo kode), tako da nič ne ovira, ko nam bo naš osebno noto. Programerji so zelo kreativni in sem preživel veliko krat sem se sestal z zelo kompleksna in polna primerov kode, kar sem morala razčleniti in analizirati delov razumeti njegovo delovanje. Zato sem poskusil dati vse moje delovno mesto v konkretnih primerih, preproste za uporabo s samo kopiraj, prilepi in se konfiguracijsko kontrole mimina.

Potrebujemo:

Winform (Form1), nadzor PrintDocument (PrintDocument1), PrintDialog (PrintDialog1), Okvir (TextBox1) in Button (Button1). Obrazec mora izgledati podobno tej sliki:

Prekopirajte naslednjo kodo v primeru Button1 klik


 Potem, če PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print ()
 Konec Če

da le-ta se odpre pogovorno okno za izbiro tiskalnika, nato pa preide celotna konfiguracija prehaja PrintDocument predmet izbran, nato pa pove, da natisnete. Kaj sproži PrintDocument dogodek PrintPage.

Sedaj je cilj PrintDocument1 dvakrat kliknite in prilepite naslednjo kodo


 e.Graphics.DrawString (TextBox1.Text, New Font ("Verdana", 18, FontStyle.Bold) Brushes.Black, 10, 10)

 Za i = 1 Kot Integer do 10
 e.Graphics.DrawString ("Sample vrstica:" & i, New Font ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
 Naslednja

Ko zaženete Natisne vsebino polju kot ime strani in deset linij z različno vzorec in furnte in velikost. Rezultat bo videti podobna naslednji sliki:

Več informacij o kontrolah ...

PrintDialog Component (Windows Forms)

Komponenta PrintDialog obrazcev Windows je že nastavljen pogovorno okno se uporablja za izbiro tiskalnika, izberite strani, ki bo natisnjen in določi tudi druge nastavitve, povezane s tiskanjem na Windows aplikacij. Uporabite ga kot preprosto rešitev, da izberete nastavitve tiskalnika ali se nanaša na tiskalnik, namesto da bi ustanovitev pogovorno okno sam. Lahko omogočajo uporabnikom, da tiskanje različnih delov njihovih dokumentov: natisnite vse, natisniti določen obseg strani ali tiskanje izbiro. S sklicevanjem na standardne Windows pogovornih oknih, ustvarjanje aplikacij, katerih osnovna funkcija je takoj pozna uporabnikom.

PrintDocument Component (Windows Forms)

PrintDocument sestavni del oblik Windows se uporablja za nastavitev lastnosti, ki opisujejo, kaj za tiskanje in natisnite dokument v Windows aplikacij.

82 odgovorov v "Tiskanje z PrintDocument in PrintDialog"

  1. ZOLRAK.MX pravi:

    No, ko sem hodil po pošti, in nihče ni odgovoril na, kot to počne za tiskanje več strani, sam sem dal nalogo, da razišče drugih mestih in sem našel kodo, vendar je ta kompleks medij za enterlo preprosto zato modique zgledu , ki so tukaj vožnjo, tako da je moja dva centa in upam, in razumem, okas ;)

    "Ta spremenljivka mora biti objavljen
    Dim linija Kot Integer = 1

    PrintDocument1_PrintPage Private Sub (ByVal pošiljatelj Kot System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Ročaji PrintDocument1.PrintPage

    "Mi opredeliti vrsto pisave in več
    Dim Vir Kot New Font ("Arial", 10)
    "Mi opredeliti, da je položaj se bo začel tiskanje
    Dim položaj Kot Integer = 20
    "Je natisnjena grof linij
    Lineaimpresa Dim Kot Integer = 0
    "Spremenljiva da vidim, če ste vzeli skok na stran
    Dim Kot Boolean = False salto_pagina
    "Spremenljiva za imenovanje, koliko vrstic za tiskanje na list
    NroLineasPagina Dim Kot Integer = 70

    Za i = linijo na 150
    e.Graphics.DrawString ("Sample vrstica:" in line, Vir, Brushes.Black, 10, položaj)
    položaj + = 15
    linija + = 1
    lineaimpresa + = 1
    Potem, če lineaimpresa = NroLineasPagina
    salto_pagina = True
    Za izhod iz
    Konec Če
    Naslednja

    Če salto_pagina = True Nato
    e.HasMorePages = True
    Else
    e.HasMorePages = False
    Konec Če
    End Sub

    No upam, in služijo z njimi in njihovo potrebo po prilagoditvi okas byes

  2. diego pravi:

    kot sem lahko natisnete

  3. renestimpy pravi:

    Uvoz System.IO

    Javna razred frmDesCaratula

    StringToPrint Kot String Private

    Private Sub frmDesCaratula_Load (pošiljatelj Kot Object in E, ki so System.EventArgs) Ročaji MyBase.Load
    Me.MdiParent = mdiPrincipal
    End Sub

    Private Sub Button1_Click (pošiljatelj Kot Object in E, ki so System.EventArgs) Ročaji Button1.Click
    Potem, če ptdConfiguracion.ShowDialog = Windows.Forms.DialogResult.OK
    ptdDocumento.PrinterSettings = ptdConfiguracion.PrinterSettings
    ptdDocumento.Print ()
    Konec Če
    End Sub

    Private Sub PrintDocument1_PrintPage (pošiljatelj Kot Object in E, ki so System.Drawing.Printing.PrintPageEventArgs) Ročaji ptdDocumento.PrintPage

    e.Graphics.DrawString (TextBox1.Text, New Font ("Verdana", 18, FontStyle.Bold) Brushes.Black, 10, 10)
    Za i = 1 Kot Integer do 10
    e.Graphics.DrawString ("Sample vrstica:" & i, New Font ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
    Naslednja

    "VSE ----- Tiskanje dokumenta

    "Dim Kot Integer = 0 charactersOnPage
    "Dim Kot Integer = 0 linesPerPage

    "Nastavi vrednost števila charactersOnPage do znakov
    "To bo fit od stringToPrint v mejah strani.
    "E.Graphics.MeasureString (stringToPrint, Me.Font, e.MarginBounds.Size, _
    "StringFormat.GenericTypographic, charactersOnPage, linesPerPage)

    "Nariše niz v mejah strani
    "E.Graphics.DrawString (stringToPrint, Me.Font, Brushes.Black, _
    "E.MarginBounds, StringFormat.GenericTypographic)

    "Odstranite del niza, ki je bila natisnjena.
    "StringToPrint = stringToPrint.Substring (charactersOnPage)

    "Preverite, če je več strani za tiskanje.
    "E.HasMorePages = stringToPrint.Length> 0

    End Sub

    Private Sub Button2_Click (pošiljatelj Kot Object in E, ki so System.EventArgs) Ročaji Button2.Click
    ReadFile ()
    ptdDocumento.Print ()
    End Sub

    Private Sub ReadFile ()
    DocName Dim Kot String = "index.html"
    DocPath Dim Kot String = "G: \"
    ptdDocumento.DocumentName = docName
    Dim tok Kot New FileStream (DocPath + docName, FileMode.Open)
    Preizkusite
    Dim Kot bralec New StreamReader (tok)
    Preizkusite
    reader.ReadToEnd stringToPrint = ()
    Končno
    reader.Dispose ()
    Poskusite na koncu
    Končno
    stream.Dispose ()
    Poskusite na koncu
    End Sub

    Private Sub Button3_Click (pošiljatelj Kot Object in E, ki so System.EventArgs) Ročaji Button3.Click
    ppdVista.Document = ptdDocumento
    ppdVista.ShowDialog ()
    End Sub

    Konec razred

    To je delal za mene, za ogled potrebujete texbox: TextBox1
    PrintDocument: ptdDocumento
    PrintPreviewControl: ppdVista
    PrintDialog: ptdConfiguracion

  4. Kevin Ramirez pravi:

    Zanimiv članek, vendar se sprašujem, kako bi morali delovati bolj poklicno okolje, kot so tiskanje vstopnic, prejemi, računi ali nadzornimi pregledi, če je tiskalnik na spletu in je bil papir ali impreison Mido tiska jih ustavil za nekaj napak.

    Shrani hacerca tega, kar ste jih omenili, kot sem poskušal večkrat neuspešno to in niso našli ničesar za rešitev tega problema.

    Lep pozdrav.
    Atte. Kevin Ramirez

  5. Franco C. Sanchez pravi:

    Dobro jutro, želel vedeti, če ste imeli vaje, tako da lahko natisnete vsebino datagridview, ker vse, kar se mi zdi na internetu je veliko kode in lahko teče nič kaj!.
    Jaz bi zelo hvaležni, če bi imeli podatke o tem.

    S spoštovanjem

  6. Manuel pravi:

    Spoštovani, sem programiranje za več kot 10 let pri Microsoftu, je šel skozi VB6 in zdaj sem z VS2010.
    Nisem našel nobenih orodje prožnejši PrintDocument na poročila, ni nič, da ne more storiti.

    Če imate vprašanja se obrnite na mene.
    pozdrav

  7. Sa Edgar pravi:

    Hi žal moram nujno pomoč Kaj se zgodi, je Rad bi vedel kako lahko natisnil vsebino Panel D, v kateri sem imel sliko (večji od plošče na ravnanje drsnika k) in nekaj učbenik ... vse od PrintDocument. Hi žal moram nujno pomoč Kaj se zgodi, je Rad bi vedel kako lahko natisnil vsebino Panel D, v kateri sem imel sliko (večji od plošče na ravnanje drsnika k) in nekaj učbenik ... vse od PrintDocument. Hi žal moram nujno pomoč Kaj se zgodi, je Rad bi vedel kako lahko natisnil vsebino Panel D, v kateri sem imel sliko (večji od plošče na ravnanje drsnika k) in nekaj učbenik ... vse od PrintDocument.

  8. Torres pravi:

    najlepša hvala, prvi preprost primer, ki deluje

  9. Alberto pravi:

    Hvala. Jasnost in natančnost. Super. Zdaj moram storiti ciklov in filtre, potrebne za tiskanje zapise v zbirki podatkov, ampak da je to zelo jasno, kako izpostavljeni ste našli drugje zelo slabo izpostavljen. Moraš biti učitelj super.

  10. Yack je dejal:

    Sem bil vaš primer, če imam vprašanje, tako kot sem lahko tiska alprograma cirle v pravem položaju, moj email je yack7raro@gmail.com če poersona laguna znan kot

Komentar