Tlač pomocou PrintDocument a PrintDialog

To má byť veľmi jednoduchý a stručný v jazyku Visual Basic. net . Ľahko pochopiteľný rýchlo, že to funguje a krátke (s veľmi malou kódu), takže nič nás, keď bráni, aby náš osobný kontakt. Programátori sú veľmi kreatívne a ja strávil nejeden krát som sa stretol s veľmi zložitá a plná príkladov kódu, ktorý som musel rozobrať a analyzovať časti pochopiť jeho fungovanie. Takže sa snažím, aby všetky svoje miesto na konkrétnych príkladoch, jednoduché pracovať s len kopírovať, vkladať a vytvoriť konfiguračný bábätká kontroly.

Potrebujeme:

WinForm (Form1), kontrola PrintDocument (PrintDocument1), PrintDialog (PrintDialog1), textové pole (textBox1) a tlačidlo (Button1). Formulár by mal vyzerať podobne ako na tomto obrázku:

Skopírujte nasledujúci kód v udalosti Click button1


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

že sa sa otvorí dialógové okno pre výber tlačiarne a potom odovzdá celý konfigurácie odovzdáva PrintDocument vybraný objekt, a potom povie tlače. Čo spúšťa udalosti PrintPage PrintDocument.

Teraz objekt PrintDocument1 dvakrát kliknite a vložte nasledujúci kód


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

 Pre i As Integer = 1 To 10
 e.Graphics.DrawString ("Sample riadok:" & I, New Font ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
 Ďalšie

Pri spustení tohto vypíše obsah poľa ako názov stránky a desať okruhov ktoré používajú iný vzorku a furnte a veľkosť. Výsledok bude vyzerať podobne ako na nasledujúcom obrázku:

Viac informácií o kontrolách ...

PrintDialog Component (Windows Forms)

Zložka PrintDialog z Windows Forms je prednastavené dialógové okno sa používa pre výber tlačiarne, vybrať, ktoré stránky tlačiť a určiť ďalšie nastavenia súvisiace s tlačou v systéme Windows aplikácií. Používajte ju ako jednoduché riešenie k výberu nastavení tlačiarne alebo v súvislosti s tlačiarňou, miesto nastavenie dialógové okno sám. Môžete povoliť používateľom tlačiť na rôzne časti svojich dokumentov: tlač všetkých, vytlačiť zadaný rozsah stránok alebo vytlačiť výber. Opiera sa o štandardných dialógov Windows, vytvárať aplikácie, ktorých základnou funkciou je okamžite známe používateľom.

PrintDocument Component (Windows Forms)

PrintDocument zložka Windows Forms slúži na nastavenie vlastností, ktoré opisujú, čo pre tlač a následne vytlačiť dokument v systéme Windows aplikácií.

84 Reakcie na "Tlač pomocou PrintDocument a PrintDialog"

  1. Bitacoras.com hovorí:

    Informácie Bitacoras.com ...

    Ak chcete, môžete kliknúť na tento príspevok Bitacoras.com. Vďaka ....

    • Gosuna hovorí:

      Je to skvelé, keď chcete tlačiť textové pole vo formulári, bez toho, aby správu.

      Nie, ak by ste mohli písať niečo o tom, kúpnej doklad, ktorý je potlačený v ReportViewer serveri sa automaticky nastaví kúpiť farbivo bez otvorenia pirntdialog o ReportViewer.

      ahoj a gratulujem k vašim príspevkom.

    • Pavol hovorí:

      Vynikajúce! Mám rád jednoduchosť. Dokonca aj spustenie nastavenia stránky ako orientácia a veľkosti

  2. Robertinho hovorí:

    Tento kód mi dosť pomohol v skutočnosti som sa pozeral on-line a veľa som sa veľmi zložitý kód, pretože určite nie je deklarovať premennú a miss, ale išlo všetko perfektné

  3. Alex hovorí:

    Dobrý deň, som hľadal na mnohých miestach až som našiel svoj príklad a pomohol mi basatante, pretože v iných stránkach, mal veľa kód a nevedel, že časť bola skutočne vytlačené
    ďakujem moc za príklad

  4. Elisha hovorí:

    Vďaka Alex, to je hlavná myšlienka tohto blogu: čo príklady sú stručné a jasné, takže nemusíte enriedes s menej kódu.

  5. ! Tux napísal:

    Tu tento kód do C #!

    namespace tlače
    {
    public class Form1 čiastočné: Formulár
    {
    verejné Form1 ()
    {
    InitializeComponent ();
    }

    private void Button1_Click (object sender, EventArgs e)
    {
    if (printDialog1.ShowDialog () == DialogResult.OK)
    {
    printDocument1.PrinterSettings = printDialog1.PrinterSettings;
    printDocument1.Print ();
    }
    }

    private void printDocument1_PrintPage_1 (object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    int = 50;
    for (int i = 0; i <10; i + +)
    {
    e.Graphics.DrawString ("SampleText", new Font ("Verdana", 20 - i, FontStyle.Italic) Brushes.Black, 20,);
    = + 25;
    }
    }
    }
    }

  6. Zzombi hovorí:

    ako môžem vedieť, postoj, že bude dávať dojem, keď X a Y

  7. Davy hovorí:

    Partner, Výborný príspevok, jasné a jednoduché, pozrite sa na niečo alebo niekoho vysvetliť veci tak, ako by malo byť všetko cez internet a len ľudia, to som sirvio.Hay ktorý vysvetľuje vo veľmi komplikovanom kódu pocit, že vedia veľa. 10 pt.
    Vďaka a pozdravom!

  8. Paulo hovorí:

    Výborný príspevok, blahoželám vám, myslím, že rovnako ako ostatní, veľmi jasné a vysvetľujúce, nie ako ostatné, ktoré som videl.
    Niečo o správe krištáľovo základné pre Visual Studio 8?
    Urobil som niekoľko správ a neprešiel ako parametre z okna forme, aby určité filtre na otázky.
    vďaka

  9. Joel hovorí:

    Dobrý deň, potrebujete vedieť, ako tieto informácie vytlačiť Chcem z foriem, texty ejeplo sa z textového poľa, špecifické a konkrétne miesta a vytvárať mi náhľad pred tlačou, a to veľa z toho, ale chcem, aby mi pomohol s to. vďaka!

  10. blabla hovorí:

    Váš ak ste programátor, ak chcete niečo dať kód nič praktickejšie dať základy, a každý pridá, čo chcú, ďakujem moc

  11. Silvestre hovorí:

    Gratulujeme k jednoduchej a jasnej
    vysvetliť, čo sa.
    Žiadam vás, prosím, vysvetlite mi, ako urobiť PrintPage nechať deň, mesiac a rok. Aký je kód, ktorý som dal v PrintDocument?
    Príklad:
    Vydané čo deň? Názov mesiaca robiť? Roka?
    Ďakujem mnohokrát.

    • Elisha hovorí:

      Rovnakým spôsobom môžete vytlačiť premenné. Ak chcete získať dátum systém používa: Now.date.

      Šťastie

  12. Rafael hovorí:

    Ahoj Elisha, vynikajúci príklad, veľmi jednoduché a užitočné, dajte mi vedieť, ako môžem urobiť povedať papier súradnice X, Y na stránku, kde chcete vytlačiť informácie. Potrebujem to preto, že musím vytlačiť niekoľko čiarových kódov na niekoľkých stránkach, ktoré už majú 25 prázdnych štítkov.

    Vďaka vopred.

    • Elisha hovorí:

      V šnúrky majú vlastnosti, ktoré umožňujú zadať súradnice X, Y, kde vytlačené. Len o to, robiť nejaké testy a som si istý, môžete to vyriešiť.

      Šťastie

  13. Osman hovorí:

    Ahoj vďaka za príspevok, som bol veľmi užitočný, ale radi by vedeli, ako vytlačiť výsledok dotazu v DataGrid

    Vďaka

    • Narcis hovorí:

      Da.Fill (DT)
      REPO.SetDataSource (DT)
      CRV.ReportSource = REP
      FRM.Controls.Add (CRV)
      CRV.Dock = System.Windows.Forms.DockStyle.Fill
      FRM.WindowState = FormWindowState.Maximized
      FRM.ShowDialog ()

      "REPO = ReportDocument
      "CRV = Crystal Report Viewer
      "WINDOWS FORM = FRM
      "DA = SqlDataAdapter
      "DT = DataTable

  14. Leonel hovorí:

    ako môžem urobiť svoju formu q má možnosť nových

  15. Nelson hovorí:

    Dobrý deň, som testoval väčšina príkladov a výsledkov, ktoré sú všetky veľmi dobre.
    Mnohokrát ďakujem.
    Ale teraz mám veľký malý problém:
    "M zotavuje informácie z tabuľky a zoznam sa mi trvá viac ako strana a nie ísť na stretnutie takto. Ocenil by som príklad z tých vašich a chcel by som byť viac než jasné.
    Práca s VS.NET 2008 a MySQL.

  16. Jose Manuel hovorí:

    ahoj, že takí muži, ale dostanete chybu a, v chybovom hlásení hovorí, že chýba vyhlásiť, ale chcel by som vedieť, akým spôsobom sa to uviesť, očakávam, že si rýchlu odpoveď, vďaka ...

  17. Denko hovorí:

    caaaaaaaaaaapooooooooooooooo ...
    a tlačiť fotografie, bolo by to ako?

    Nemôžem nájsť súboru wave ... ale pretože DrawImagen

  18. Piazza Fernando hovorí:

    Dobrý deň!
    Veľmi zaujímavým príkladom. Som program v C #.
    Existuje nejaký spôsob, ako náhľadu?
    Zdravím!

  19. Miguel hovorí:

    Som veľmi rád tlače tesxtbox s niekoľkými znakov, ale pri pokuse o tlač memo pole, ktoré má viac riadkov, to mi dáva chybu. Nerešpektuje ma, že 80 znakov na riadok, ako to je v memo poli, napíšte linku až do úplného zastavenia, tak vytlačiť iba prvých 80 znakov z každého odseku.
    Cením si mi povedať, ako môžem opraviť túto chybu.

  20. Leopold hovorí:

    Hele, vieš, že som sa pokúsil o prvý príklad, ale nie šťastie vytlačiť, použite PDF tlačiareň. A keď som si prázdny. Sa mi chýba bezpečnosť alebo zadať ďalšie parametre .. keď pomôžete mi prosím?

    Ďakujem.

  21. Manuel hovorí:

    Zostáva pridať príklad dať návrat vozíka.
    Vďaka vopred,

  22. Fernando hovorí:

    Viete, ako je potrebné, aby: 90 znakov na riadok a urobiť návrat vozíka

  23. GNZ hovorí:

    No ... ty Lucis blázon!
    Merci beaucoup

  24. Gina hovorí:

    & Xk javí ako nelegálnou

  25. Jose hovorí:

    Časť a odstrániť, nechajte sa a
    nič viac

  26. Julian hovorí:

    Ty si muž, šéf re mi slúžila, vďaka.

  27. Josef hovorí:

    vynikajúce, ale pýtam sa znova, je nejaký spôsob, ako vytlačiť výsledok dotazu v DataGridView?

  28. Cristian Ruiz hovorí:

    znie, ako by ste si vytlačím obsah DataGridView1

  29. kobellas hovorí:

    Ja sa zbláznim!

    Mám dokument, ktorý som volať k tlači

    wdoc.print ()

    Mimochodom, mám predvolenú tlačiareň a čiernu lavičku a ja som si vybrať, či som to s PDF Creator alebo farby. Skúšal som všetko k ničomu.

    Niekto by taký láskavý a povedz mi kód, ktorý vytlačí "wdoc" s tlačiarňou mám vybrať?

    Ďakujem moc vopred!

  30. Anonymný hovorí:

    Ahoj!

    Páčilo sa mi miesto, ale bol som trochu na pochybách ...

    ak napríklad mám 2 textové pole, a ja chcem tlačiť text textBox1, ako ja?

  31. Santamaria John hovorí:

    Výborný článok, pravda, v najjednoduchšom najlepšie. a zvyšok je len zažiť

  32. Isabel hovorí:

    Ak namiesto tlače textu som imrimir
    DataGridView vo August

  33. helen87 hovorí:

    Dobrý deň, robím krátky program s VB.NET a mám problém pri odosielaní tlače.

    To, čo potrebujem, je tlačiť tabuľky v databáze, sa predpokladá, že užívateľ zvolí, ktorú časť databázy, ktorú chcete vytlačiť, ale nie ako idicar netlačí všetky databázy.

    Ak niekto môže pomôcť by si toho vážim.
    Pozdrav!

  34. Emilio hovorí:

    Dobrý Použil som tento kód do tlače Crystal Report Report.PrintToPrinter odsek 1, False, 0, 0)
    ale táto linka bude tlačiareň tlačiť na defaul to ako predvolené a obsadil ako predertermina majú vytlačiť a zaslať ďalšie ďakujem za pomoc s nejakým kódom, ktorý môže dať na cestu alebo meno z kódu pre tlač vďaka

  35. Kayien hovorí:

    Zdravím a vďaka za zdieľanie poznaniu pravdy som nový na to, videl som váš kód decuenta, ako jednoduché to môže byť naučiť programovanie je custion prax a odhodlanie ..

    moja otázka je mám formu, ktorá má 107 chechbox a 4 textbox, ako som si musím vytlačiť informácie, pretože forma má príliš veľa obsahu, aby sa zmestili na jeden list listov A4 štýlu

    to, čo robím a mám také jasné, že mám príkaz (IF - Else - Potom) pre výber svojej zvolenej forme conetenido ale vzhľadom k tomu, kedy som si poslať ju vytlačiť a zaslať navyše k forme a formáte vybraný obsah nerozumie a pomocou Crystal Report mi nedovolí použiť políčko: S som tak zamotaný, že nemôžem urobiť tu nechať Jeden obrázok http://img826.imageshack.us/img826/2738/14397131.jpg ~ ~ dobj

  36. Tatiana hovorí:

    veľmi dobrým príkladom. Ale tam som vytlačiť text, ktorý prihrávku. A keď chcem vytlačiť dokument som si nechal na mojom PC? Otázkou je: Potrebujem vytlačiť dokument som uložený v C: \ \. Problém je, že som prvý setearle rozsah strán pre tlač (XQ nie je nutné celý dokument) a potom vytlačiť. Čo môžem robiť?

    • Elisha hovorí:

      otázka vedie k mnohým odpovedí, a to všetko závisí od typu súboru, ktorý chcete vytlačiť, pretože to nie je rovnaké ako textový súbor tabuľkového procesora Excel alebo obrazový súbor. Čo je to súbor, ktorý chcete tlačiť?

  37. Cesar povedal:

    Výborným príkladom som založil a je veľmi ľahké.

    Mám niekoľko otázok, len hlavné z nich je, ako uvádza kroky, ktoré urobiť koniec riadku. caundo nie dosť textu na jeden riadok, ale reequiere 2 alebo viac?

    vďaka

  38. Carlos hovorí:

    Dobrý deň, mám problém v kóde PrintDocument ako "zosilňovač" hovorí chybu a povie mi, že nie je deklarovaná ... v prípade, že sú tak láskaví k triedeniu problém ... vďaka

    • Angelica hovorí:

      To hovorí "&" sa vzťahuje iba na amperson čo tam je. Tento riadok kódu je zreťazenie textu. Nechaj to ako '&' a hotovo!

      Nie, ak ste už objavili skôr, ale ešte nechať odpoveď.

      Zdravím!

      • Elisha hovorí:

        Vďaka Angelica týždeň Bolo to zlé HTML editor, ktorý zmenil kód. Teraz ju opraviť!

  39. nemecky hovorí:

    Veľmi dobrým príkladom pre tlač pomocou PrintDocument a PrintDialog, ale s týmto návodom, ako skok stránke? pomocou e.hasmorepage počítať mi nekonečné stránky.

    Vďaka

  40. naranjamarmota7 hovorí:

    to naozaj cool a ľahko a príliš mnoho ďalších vyjadriť v kóde bola veľkou pomocou .... vďaka

  41. Mel hovorí:

    Buenisimo .... Vďaka za pomoc ..

  42. Ripper hovorí:

    Dobrý deň, chcem, aby tlačidlo pre tlač správu! ? ako by to
    uprednostňovať

  43. Pierre Hack hovorí:

    vynikajúci a veľa mi pomohol bola asi 3 dni, ktorí hľadajú to vďaka priateľovi!

  44. menuenter hovorí:

    Mám dotaz, ktorý som hľadal všade a ja nemám odpoveď doteraz.
    Moja otázka je:
    Mám formulár pre systém Windows v vb.net a potrebujem ho vytlačiť, môj problém je, že je to tak dlho (som umožnil posuv vlastnosť formulára), je možné vytlačiť len to, čo mám na obrazovke v dobe, nie tak zvyšok formulára.
    Pomocou tohto kódu pre tlač:
    "Tlačené podobe
    Btnimprimir_Click Private Sub (Bývalá odosielateľ ako System.Object, Bývalá e As System.EventArgs) Handles Btnimprimir.Click

    S PrintForm1
    . PrintAction = Printing.PrintAction.PrintToPreview

    . Tlače (ME, PowerPacks.Printing.PrintForm.PrintOption.Scrollable)

    End With

    End Sub

    Ak tomu tak nie je môže tlačiť formy týchto charakteristík.

    dobrý z už moc ďakujem vopred. -

  45. onieto hovorí:

    Ahoj, skvelá informácie, ďakujem moc, že ​​som super nový tejto a žiadnej inej forme tlačenej a bojoval s myšlienkou trochu súradníc a mriežka vytlačiť pomoc, tu je kód, nováčik ako ja, slúži:

    ************************************************** ********************************

    "To je pre tlač na sieťových rozmiestnených 50 pixelov s menovkami, ktoré vám pomôžu nájsť to, čo chcete tlačiť

    Private Sub Button1_Click (Bývalá odosielateľ ako System.Object, Bývalá e As System.EventArgs) Madlá Button1.Click
    PrintDocument1.Print ()
    End Sub

    PrintDocument1_PrintPage Private Sub (Bývalá odosielateľ ako System.Object, Bývalá e As System.Drawing.Printing.PrintPageEventArgs) Madlá PrintDocument1.PrintPage
    CyanPen Dim As New Pen (Color.Cyan, 1)
    Dim y As Integer

    Pre y = 1 do 23.

    e.Graphics.DrawLine (cyanPen, 1, 1 + (y * 50), 850, 1 + (y * 50))
    e.Graphics.DrawLine (cyanPen2, 1 + (y * 50), 1, 1 + (y * 50), 1150)
    e.Graphics.DrawString ((y * 50), New Font ("Verdana", 8, FontStyle.Bold) Brushes.Red, 40, -6 + (y * 50))
    e.Graphics.DrawString ((y * 50), New Font ("Verdana", 8, FontStyle.Bold) Brushes.Red, -10 + (y * 50), 44)
    e.Graphics.DrawString ((y * 50), New Font ("Verdana", 8, FontStyle.Bold) Brushes.Red, 390, -6 + (y * 50))
    e.Graphics.DrawString ((y * 50), New Font ("Verdana", 8, FontStyle.Bold) Brushes.Red, -10 + (y * 50), 544)
    Ďalšie

    End Sub
    ************************************************** ********************************

  46. Eduardo hovorí:

    Ďakujem vám! To mi veľmi pomohol

  47. lover1986 hovorí:

    Dobrý deň ...
    Ako ľúto, ale že som mohol pomôcť ...
    ako môžem vytlačiť štítok obraz vloženého do .....? alebo PictureBox .....? Ďakujem Vám vopred pomôcť ...

  48. EDU povedal:

    Výborný. Ale ako je možné tlačiť viac ako 1 stranu?

  49. Miguel hovorí:

    Vidím to pred tlačou pomocou PrintToPreview

    vďaka

  50. ZOLRAK.MX hovorí:

    Graicas na kód, pretože je veľmi ľahké ho vytlačiť tak dlho, kým všetky požadované informácie sa tlačí na jeden list, pretože to, čo potrebujem, ak tlačiť viac ako jeden list, pretože to, čo je príkaz k tlači obsah v ListView a sú dobré dosky a použiť tento kód vytlačí iba jednu stránku a neviem, či niekto vie, ako urobiť skok z tlačenej stránky a všetky informácie vopred ďakujem moc ;)

Komentár