打印使用的PrintDocument和的PrintDialog

這是為了在一個非常簡單的和短暫的Visual Basic.NET中 容易迅速了解,它的工作原理和短(用很少的代碼),所以沒有什麼妨礙了我們時,把我們的個人接觸。 程序員是非常有創意,我花了很多次,我遇到非常複雜,充滿了代碼的例子,我有解剖和分析,以了解其運作的部分。 所以我盡量把我的崗位在具體的例子,操作簡單,只是複製,粘貼和使配置mimina控制。

我們需要:

一個WinForm(Form1)中,控制的PrintDocument(PrintDocument1),1的PrintDialog(PrintDialog1),一個TextBox(TextBox1的)和一個按鈕(Button1)。 應該類似於這個圖片的形式:

複製下面的代碼在Button1的Click事件


然後,如果PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print()
結束如果

它打開對話框,選擇打印機,然後通過整個配置通過PrintDocument對象選擇,然後告訴你打印。 什麼觸發事件的PrintPage的PrintDocument。

現在雙重對象PrintDocument1,單擊並粘貼以下代碼


 e.Graphics.DrawString(TextBox1.Text,新字體(“宋體”,18,FontStyle.Bold)Brushes.Black,10,10)

對於我作為整數= 1至10
 e.Graphics.DrawString(“示例行:”我新字體(“宋體”,10,FontStyle.Bold)Brushes.Black,10,20 +(I * 30))
未來

當您運行此打印頁,並使用不同的樣品和furnte和大小十行的標題框的內容。 結果將類似於下面的圖像:

控件的更多信息...

PrintDialog元件(Windows窗體)

Windows窗體PrintDialog組件是一個預先配置的對話框,用於選擇打印機,選擇打印,並確定哪些網頁與在基於Windows的應用程序的打印設置。 使用它作為一個簡單的解決方案,選擇打印機設置或打印機,而不是設立一個對話框本身。 您可以允許用戶打印其文件的各個部分:所有打印,打印的頁面指定的範圍內,或打印選擇。 依靠標準的Windows對話框,創建應用程序,其基本功能是立即為用戶所熟悉。

PrintDocument組件(Windows窗體)

Windows窗體PrintDocument組件用於設置屬性描述打印,然後打印在基於Windows的應用程序的文件。

82“打印使用的PrintDocument和的PrintDialog”

  1. ZOLRAK.MX說:

    以及我走了一圈後,沒有人回答,因為它打印多個頁面,我給自己的任務,以調查其他網站,我發現了一個代碼,但這種複雜介質enterlo容易因此modique的例子找到這裡,所以有我的兩分錢,我希望,我明白okas ;)

    “這個變量公佈
    昏暗線作為整數= 1

    私人小組PrintDocument1_PrintPage(BYVAL發件人作為System.Object的,BYVAL e由於System.Drawing.Printing.PrintPageEventArgs)處理PrintDocument1.PrintPage

    “我們定義的字體類型和更多的
    作為新字體暗淡的來源(“宋體”,10)
    “我們定義該位置開始打印
    昏暗的位置作為整數= 20
    “行數打印
    lineaimpresa點心作為整數= 0
    “變時看到你的頁面的飛躍
    暗淡布爾=假salto_pagina
    “變量指定每張紙上打印多少行
    NroLineasPagina點心作為整數= 70

    對於i = 150行
    e.Graphics.DrawString(“示例行:”行,來源,Brushes.Black,10,位置)
    位置+ = 15
    線+ = 1
    lineaimpresa + = 1
    然後,如果lineaimpresa = NroLineasPagina
    salto_pagina = TRUE
    退出對於
    結束如果
    未來

    如果salto_pagina = True,則
    e.HasMorePages = TRUE
    其他
    e.HasMorePages = FALSE
    結束如果
    END SUB

    我希望,並為他們和他們的需要,以適應okas輪空

  2. 迭戈說:

    我可以打印

  3. renestimpy說:

    進口System.IO

    公共類frmDesCaratula

    StringToPrint作為字符串私人

    私人,小組frmDesCaratula_Load(發送者為對象,作為System.EventArgsé)把手MyBase.Load
    Me.MdiParent = mdiPrincipal
    END SUB

    私人小組中button1_Click(發送者為對象,作為System.EventArgsé)把手Button1.Click
    然後,如果ptdConfiguracion.ShowDialog = Windows.Forms.DialogResult.OK
    ptdDocumento.PrinterSettings = ptdConfiguracion.PrinterSettings
    ptdDocumento.Print()
    結束如果
    END SUB

    私人,小組PrintDocument1_PrintPage(發送者為對象,為System.Drawing.Printing.PrintPageEventArgsé)處理ptdDocumento.PrintPage

    e.Graphics.DrawString(TextBox1.Text,新字體(“宋體”,18,FontStyle.Bold)Brushes.Black,10,10)
    對於我作為整數= 1至10
    e.Graphics.DrawString(“示例行:”我新字體(“宋體”,10,FontStyle.Bold)Brushes.Black,10,20 +(I * 30))
    未來

    -----所有打印文檔

    “DIM為整數= 0 charactersOnPage
    “DIM為整數= 0 linesPerPage

    設置數量charactersOnPage的價值到字符
    “將適合的stringToPrint在頁面的邊界。
    “E.Graphics.MeasureString(stringToPrint,Me.Font,e.MarginBounds.Size _
    “StringFormat.GenericTypographic,charactersOnPage,linesPerPage)

    “內頁的邊界繪製字符串
    “E.Graphics.DrawString(stringToPrint,Me.Font,Brushes.Black _
    E.MarginBounds,StringFormat.GenericTypographic的)

    “刪除已打印的字符串的一部分。
    “StringToPrint = stringToPrint.Substring(charactersOnPage)

    “檢查,看看是否要打印多個頁面。
    “E.HasMorePages = stringToPrint.Length> 0

    END SUB

    私人小組Button2_Click(發送者為對象,作為System.EventArgsé)處理Button2.Click
    用readfile()
    ptdDocumento.Print()
    END SUB

    ReadFile的()
    DocName暗淡作為字符串=“index.html的”
    作為字符串= docPath中暗淡的“G:\”
    ptdDocumento.DocumentName = docName
    的暗淡流作為新的FILESTREAM(docPath中+ docName,FileMode.Open)
    嘗試
    昏暗的讀者作為新的StreamReader(流)
    嘗試
    reader.ReadToEnd stringToPrint =()
    終於
    reader.Dispose()
    最終的結局
    終於
    stream.Dispose()
    最終的結局
    END SUB

    私人,小組Button3_Click(發送者為對象,作為System.EventArgsé)處理Button3.Click
    ppdVista.Document = ptdDocumento
    ppdVista.ShowDialog()
    END SUB

    末級

    這為我工作,你需要一個texbox:TextBox1的
    PrintDocument的:ptdDocumento
    PrintPreviewControl:ppdVista
    的PrintDialog:ptdConfiguracion

  4. 凱文·拉米雷斯說:

    有趣的文章,但奇蹟,我們應該如何行事更專業的環境,如印刷門票,收據,發票或控制檢查,如果打印機處於聯機的印刷紙或impreison MIDO已經停止了一些錯誤。

    保存hacerca你提到,因為我已​​經試過很多次失敗這並沒有發現任何東西來解決這個問題。

    的問候。
    ATTE。 凱文·拉米雷斯

  5. 佛朗哥C.桑切斯說:

    早上好,想知道如果你有任何教程,讓您可以打印一個DataGridView的內容,因為我在互聯網上找到的一切是多的代碼,並能夠運行什麼誒!
    我將不勝感激,如果你有關於它的信息。

    問候

  6. 曼努埃爾說:

    親愛的,我已經超過10年在微軟的編程,通過了VB6,現在我用VS2010的。
    我還沒有發現任何工具,更靈活的PrintDocument報導,還有什麼他不能做。

    如果您有任何疑問,請與我聯繫。
    問候

  7. 埃德加·薩說:

    對不起,我迫切需要幫助,會發生什麼,我想知道我怎麼能打印我有一個形象(大於小組在處理滾動條ķ)和幾個TextBox的內容面板D ......所有的PrintDocument。對不起,我迫切需要幫助,會發生什麼,我想知道我怎麼能打印我有一個形象(大於小組在處理滾動條ķ)和幾個TextBox的內容面板D ......所有的PrintDocument。對不起,我迫切需要幫助,會發生什麼,我想知道我怎麼能打印我有一個形象(大於小組在處理滾動條ķ)和幾個TextBox的內容面板D ......所有的PrintDocument。

  8. 托雷斯說:

    非常感謝你,第一個簡單的例子,

  9. 阿爾貝托說:

    謝謝。 清晰和嚴謹。 大。 現在,我必須做必要的循環和過濾器,打印數據庫中的記錄,但很清楚如何暴露你已經找到其他地方很昏暗暴露。 你要成為一名教師的偉大。

  10. 廢話說:

    我服你的例子,如果我有一個問題,正如我的alprograma cirle打印到合適的位置我的電子郵件是yack7raro@gmail.com如果poersona潟湖稱為

評論