הדפסה באמצעות PrintDocument ו PrintDialog

זה אמור להיות פשוט מאוד קצרה Visual Basic. נטו . קל להבין מהר כי זה עובד קצר (עם קוד מעט מאוד), כך ששום דבר לא מפריע לנו מתי לשים את המגע האישי שלנו. מתכנתים הם יצירתיים מאוד, ביליתי הרבה פעמים נפגשתי עם מאוד מורכב, מלא דוגמאות קוד, שבו הייתי צריך לנתח ולנתח חלקי להבין את פעולתו. אז אני מנסה לשים את כל הפוסט שלי דוגמאות קונקרטיות, פשוטים לתפעול עם העתק פשוט, להדביק לעשות כמה בקרות mimina תצורה.

אנחנו צריכים:

Winform (Form1), בקרת PrintDocument (PrintDocument1), PrintDialog (PrintDialog1), תיבת טקסט (TextBox1) ולחצן (Button1). הטופס אמור להיות דומה לתמונה זו:

העתק את הקוד הבא במקרה של לחץ button1


 אז אם PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print ()
 סוף אם

כי עושה הוא לפתוח את תיבת הדו שיח כדי לבחור מדפסת ולאחר מכן מעביר את תצורת כל עובר את האובייקט הנבחר PrintDocument ואז אומר לך להדפיס. מה מעורר PrintDocument PrintPage האירוע.

עכשיו לחיצה כפולה על אובייקט PrintDocument1 ולהדביק את הקוד הבא


 e.Graphics.DrawString (גופן TextBox1.Text, חדש ("Verdana", בן 18, FontStyle.Bold) Brushes.Black, 10, 10)

 כי אני כמספר שלם = 1 עד 10
 e.Graphics.DrawString ("שורה לדוגמה:" & I, גופן חדש ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
 הבא

כאשר אתה מפעיל זו מדפיסה את התוכן של תיבת ככותרת של הדף עשר שורות באמצעות מדגם שונה furnte וגודל. התוצאה תהיה דומה לתמונה הבאה:

מידע נוסף על הפקדים ...

PrintDialog Component (טפסים של Windows)

מרכיב PrintDialog של טפסים של Windows היא תיבת מוגדרות מראש שיח משמש כדי לבחור מדפסת, לבחור אילו דפים להדפיס, ולקבוע הגדרות אחרות הקשורות הדפסה יישומים מבוססי Windows. להשתמש בו כפתרון פשוט לבחור את הגדרות המדפסת או בקשר למדפסת, במקום להגדיר את תיבת הדו שיח עצמו. אתה יכול לאפשר למשתמשים להדפיס את החלקים השונים של המסמכים שלהם: להדפיס הכל, להדפיס את טווח מסוים של דפים או להדפיס הבחירה. על ידי הסתמכות על Windows דיאלוגים רגילים, ליצור יישומים בעלי פונקציונליות בסיסית מוכרת באופן מיידי למשתמשים.

רכיב PrintDocument (טפסים של Windows)

מרכיב PrintDocument של טפסים של Windows משמש להגדיר את המאפיינים המתארים את מה להדפיס ולאחר מכן להדפיס את המסמך יישומים מבוססי Windows.

82 תגובות ל "הדפסה באמצעות PrintDocument ו PrintDialog"

  1. ZOLRAK.MX אומר:

    גם הסתובבתי הודעה ואף אחד לא ענה על כפי שהוא נוהג להדפיס יותר עמודים, נתתי את עצמי את המשימה לחקור אתרים אחרים ומצאתי את הקוד אבל זה בינוני מורכבת enterlo בקלות כך למשל modique כך נוהגים כאן כך שאין שני הסנטים שלי ואני מקווה ואני מבין okas ;)

    "משתנה זה צריך להתפרסם
    קו דים כמספר שלם = 1

    PrintDocument1_PrintPage Private Sub (ByVal השולח כמו System.Object, ByVal e כמו System.Drawing.Printing.PrintPageEventArgs) ידיות PrintDocument1.PrintPage

    "אנו מגדירים את סוג הגופן ועוד
    מקור דים כפי גופן חדש ("אריאל", 10)
    "אנו מגדירים את העמדה יתחיל הדפסה
    עמדת דים כמספר שלם = 20
    "הרוזן קווי מודפס
    Lineaimpresa דים כמספר שלם = 0
    'משתנה כדי לראות מתי אתה לוקח זינוק של הדף
    דים כמו salto_pagina בוליאני = False
    'משתנה כדי לציין כמה שורות להדפיס בכל גיליון
    NroLineasPagina דים כמספר שלם = 70

    עבור i = קו 150
    e.Graphics.DrawString ("שורה לדוגמה:" & קו, מקור, Brushes.Black, 10, מיקום)
    מיקום + = 15
    קו + = 1
    lineaimpresa + = 1
    אז אם lineaimpresa = NroLineasPagina
    salto_pagina = True
    יציאה
    סוף אם
    הבא

    אם salto_pagina = נכון אז
    e.HasMorePages = True
    אחר
    e.HasMorePages = False
    סוף אם
    End Sub

    ובכן אני מקווה לשרת אותם ואת הצורך שלהם להסתגל מילות פרידה okas

  2. דייגו אומר:

    כמה שאני יכול להדפיס

  3. renestimpy אומר:

    יבוא System.IO

    המעמד הציבורי frmDesCaratula

    StringToPrint כמחרוזת פרטית

    Private Sub frmDesCaratula_Load (השולח כהודעות דואר אובייקט, כפי System.EventArgs) ידיות MyBase.Load
    Me.MdiParent = mdiPrincipal
    End Sub

    Private Sub Button1_Click (השולח כהודעות דואר אובייקט, כפי System.EventArgs) ידיות Button1.Click
    אז אם ptdConfiguracion.ShowDialog = Windows.Forms.DialogResult.OK
    ptdDocumento.PrinterSettings = ptdConfiguracion.PrinterSettings
    ptdDocumento.Print ()
    סוף אם
    End Sub

    Private Sub PrintDocument1_PrintPage (השולח כהודעות דואר אובייקט, כפי System.Drawing.Printing.PrintPageEventArgs) ידיות ptdDocumento.PrintPage

    e.Graphics.DrawString (גופן TextBox1.Text, חדש ("Verdana", בן 18, FontStyle.Bold) Brushes.Black, 10, 10)
    כי אני כמספר שלם = 1 עד 10
    e.Graphics.DrawString ("שורה לדוגמה:" & I, גופן חדש ("Tahoma", 10, FontStyle.Bold) Brushes.Black, 10, 20 + (i * 30))
    הבא

    "הכל ----- הדפסת מסמך

    "דים כמספר שלם = 0 charactersOnPage
    "דים כמספר שלם = 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

    Private Sub Button2_Click (השולח כהודעות דואר אובייקט, כפי System.EventArgs) ידיות Button2.Click
    ReadFile ()
    ptdDocumento.Print ()
    End Sub

    Private 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

    Private Sub Button3_Click (השולח כהודעות דואר אובייקט, כפי System.EventArgs) ידיות Button3.Click
    ppdVista.Document = ptdDocumento
    ppdVista.ShowDialog ()
    End Sub

    בסוף כיתה

    זה עבד בשבילי, אתה צריך texbox: TextBox1
    PrintDocument: ptdDocumento
    PrintPreviewControl: ppdVista
    PrintDialog: ptdConfiguracion

  4. קווין רמירז אומר:

    מאמר פלא מעניין, אבל איך אנחנו צריכים לפעול ביתר סביבות מקצועיים כגון הדפסה של כרטיסים, קבלות, חשבוניות או המחאות השליטה אם המדפסת לא מחובר ויש לו נייר או impreison מידו של הדפסה הופסק להם על שגיאה כלשהי.

    שמור hacerca של מה שאתה מזכיר כפי שניסיתי פעמים רבות ללא הצלחה זה ולא מצאתי שום דבר כדי לפתור את הבעיה.

    ברכות.
    Atte. קווין רמירז

  5. פרנקו ג סנצ'ז אומר:

    בוקר טוב, רציתי לדעת אם יש לכם מדריכים כדי שתוכלו להדפיס את התוכן של datagridview כי כל מה שאני מוצא באינטרנט הוא קוד הרבה מסוגל להפעיל כל דבר אה!.
    הייתי מאוד מעריך אם היה לך מידע על זה.

    בברכה

  6. מנואל אומר:

    יקירתי, אני תכנות במשך 10 שנים במיקרוסופט, עבר VB6 ועכשיו אני עם VS2010.
    לא מצאתי כל כלי גמיש יותר PrintDocument הדיווחים, אין שום דבר שהוא לא יכול לעשות.

    אם יש לך שאלות אנא צרו איתי קשר.
    דרישת שלום

    • פרנקו ג סנצ'ז אומר:

      מנואל בוקר טוב, הייתי מבלה ליצור קשר בדוא"ל להיות יותר בתור כדי לתת לי יד?
      תודה רבה
      אני משאיר את שלי
      francocsanchez@gmail.com

      יש צורך ביותר: T

    • קווין רמירז אומר:

      גם מנואל agredece לך הרבה לתשובה שאני יהיה לשלוט בי כמו דואר אלקטרוני או כל קשר facilitaras לי כי יש לי כחצי שנה לתוך זה.

      ואני חושב שאחד קצת הדרכה מקצועית אני יכול להשתמש.

      אני משאיר את הדואר שלי.
      kevinramirez92@hotmail.com

      ברכות.
      Atte. קווין רמירז.

    • פרנקו אומר:

      מנואל אני צריך עזרה על איך להדפיס את התוכן של datagridview!.
      האם אתה יכול לתת לי יד?
      francocsanchez@gmail.com

    • לואיס Cepeda אומר:

      ברכות.
      ש est היא הדואר שלי לפעמים רק צריך לעזור להדפסה אוטומטית בשנת 2010 Visual Basic.
      Luis_Cepedaf@hotmail.com

    • סן מרטין פרנקו אומר:

      יש ספריה ספציפית כדי לטעון ערכים קופסאות טקסט במסמך Excel ו ממדים נקבע לפי immpresora.

      תודה

  7. שא אדגר אומר:

    היי סליחה אני צריך עזרה דחופה מה שקורה הוא שאני רוצה לדעת איך אני יכול להדפיס את ד התכנים לוח שבו יש לי תמונה (גדול יותר בהתמודדות עם לוח k פס הגלילה) ואת הטקסט ... כמה כולם PrintDocument. היי סליחה אני צריך עזרה דחופה מה שקורה הוא שאני רוצה לדעת איך אני יכול להדפיס את ד התכנים לוח שבו יש לי תמונה (גדול יותר בהתמודדות עם לוח k פס הגלילה) ואת הטקסט ... כמה כולם PrintDocument. היי סליחה אני צריך עזרה דחופה מה שקורה הוא שאני רוצה לדעת איך אני יכול להדפיס את ד התכנים לוח שבו יש לי תמונה (גדול יותר בהתמודדות עם לוח k פס הגלילה) ואת הטקסט ... כמה כולם PrintDocument.

  8. טורס, אומר:

    תודה רבה, דוגמה פשוטה 1 שעובד

  9. אלברטו אומר:

    תודה. בהירות קשיחות. נהדר. עכשיו אני צריך לעשות את מחזורי ומסננים הדרושים כדי להדפיס את רשומות במסד נתונים, אבל זה ממש ברור איך נחשפים שמצאת במקום אחר מאוד חשוף באור עמום. אתה צריך להיות מורה נהדר.

  10. ענה לי ואמר:

    שירתתי למשל אם יש לי שאלה כמו שאני יכול הדפוס cirle alprograma לתפקיד הנכון הדוא"ל שלי הוא yack7raro@gmail.com אם הלגונה poersona המכונה

הערה