الطباعة باستخدام PrintDocument وPrintDialog

ويهدف هذا إلى أن تكون بسيطة جدا وقصيرة في البصرية الأساسية. صافي . من السهل أن نفهم بسرعة أنه يعمل وقصيرة (مع رمز القليل جدا) بحيث لا يعوق لنا عندما وضع لمسة شخصية لدينا. المبرمجين وخلاقة جدا، وقضيت الكثير من المرات التقيت مع معقدة جدا ومليئة الأمثلة على رمز، والتي كان لي لشرح وتحليل الأجزاء لفهم عملها. لذلك أنا أحاول أن أضع كل ما عندي من آخر في أمثلة واقعية وبسيطة لتشغيل مع نسخة فقط، لصق وجعل ضوابط mimina التكوين.

نحن بحاجة إلى:

وWinform (Form1)، وسيطرة PrintDocument (PrintDocument1)، وPrintDialog (PrintDialog1)، مربع نص (TextBox1) و زر (Button1). وينبغي أن النموذج تبدو مشابهة لهذه الصورة:

نسخ التعليمات البرمجية التالية في الحدث Click من button1


 ثم إذا PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK
 PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings
 PrintDocument1.Print ()
 نهاية إذا

أن ما يفعله هو فتح مربع الحوار لتحديد الطابعة ثم يمر التكوين بأكمله يمر الكائن PrintDocument المختارة وثم يقول لك طباعة. ما يبعث على PrintDocument PrintPage الحدث.

الآن PrintDocument1 كائن النقر المزدوج ولصق رمز التالية


 e.Graphics.DrawString (TextBox1.Text، خط جديد ("فيردانا"، 18 عاما، FontStyle.Bold) Brushes.Black، 10، 10)

 لأني وصحيح = 1 إلى 10
 e.Graphics.DrawString ("خط عينة:" وأنا، جديد الخط ("Tahoma"، 10، FontStyle.Bold) Brushes.Black، 10، 20 + (ط * 30))
 التالي

عند تشغيل هذا يطبع محتويات مربع كما في عنوان الصفحة والخطوط باستخدام 10 عينة مختلفة وfurnte والحجم. ستكون النتيجة مشابهة للصورة التالية:

مزيد من المعلومات حول الضوابط ...

PrintDialog المكون (أشكال ويندوز)

المكون PrintDialog من أشكال ويندوز هو يستخدم مربع حوار ما قبل تكوين لتحديد طابعة، واختيار الصفحات التي لطباعة وتحديد الأماكن الأخرى ذات الصلة الطباعة في التطبيقات المستندة إلى Windows. استخدامه بمثابة حل بسيط لتحديد إعدادات الطابعة أو يتصل الطابعة، بدلا من إنشاء مربع الحوار في حد ذاته. يمكنك السماح للمستخدمين بطباعة أجزاء مختلفة من وثائقهم: طباعة جميع، طباعة نطاق معين من الصفحات أو طباعة مجموعة مختارة. من خلال الاعتماد على نظام التشغيل Windows مربعات الحوار القياسية، إنشاء التطبيقات التي وظيفة أساسية، ليس غريبا على الفور للمستخدمين.

PrintDocument المكون (أشكال ويندوز)

يتم استخدام عنصر PrintDocument من أشكال ويندوز لتعيين الخصائص التي تصف ما لطباعة ثم طباعة المستند في التطبيقات المستندة إلى Windows.

84 الردود على "الطباعة باستخدام PrintDocument وPrintDialog"

  1. Bitacoras.com يقول:

    معلومات Bitacoras.com ...

    إذا كنت ترغب، يمكنك النقر على تقييم هذه Bitacoras.com آخر. شكرا ....

    • Gosuna يقول:

      انه لشيء رائع عندما كنت ترغب في طباعة النص على شكل بدون تقديم تقرير.

      ليس إذا كنت قد تستطيع شيئا حيال جعل إيصال الشراء التي طبعت في ملقم reportviewer سوف الافتراضية تلقائيا لشراء صبغة دون فتح pirntdialog من reportviewer.

      وداعا والتهنئة على المساهمات الخاصة بك.

    • يقول بولس:

      ممتاز! انا احب البساطة. تشغيل حتى الإعدادات من صفحة وتوجهه وحجمه

  2. Robertinho يقول:

    وساعد هذا الرمز لي الكثير في الواقع كنت أبحث على الانترنت كثيرا، وأتيت رمز معقدة جدا لأنك بالتأكيد لا تعلن المتغير والآنسة ولكن كل شيء ذهب الكمال

  3. أليكس يقول:

    مرحبا كنت أبحث في كثير من الأماكن حتى وجدت سبيل المثال الخاص بك، وساعدتني منذ basatante في صفحات أخرى لديها الكثير ورمز لا يعرف وقد طبع في الواقع ذلك الجزء
    شكرا جزيلا على سبيل المثال

  4. أليشع يقول:

    شكرا أليكس، وهذا هو الفكرة الرئيسية من هذا بلوق: هل هناك أمثلة واضحة ومختصرة حتى لا enriedes مع رمز أقل.

  5. ! التكس يقول:

    لديك هنا رمز لC #!

    مساحة طباعة
    {
    العامة Form1 فئة جزئية: نموذج
    {
    العامة Form1 ()
    {
    InitializeComponent ()؛
    }

    خاصة باطل button1_Click (كائن المرسل، EventArgs ه)
    {
    إذا كان (printDialog1.ShowDialog () == DialogResult.OK)
    {
    printDocument1.PrinterSettings = printDialog1.PrinterSettings؛
    printDocument1.Print ()؛
    }
    }

    خاصة printDocument1_PrintPage_1 الفراغ (المرسل وجوه، System.Drawing.Printing.PrintPageEventArgs ه)
    {
    مادبا 1 = 50؛
    ل (كثافة العمليات ط = 0، وأنا <10؛ أنا + +)
    {
    e.Graphics.DrawString ("SampleText"، خط جديد ("فيردانا"، 20 - ط، FontStyle.Italic) Brushes.Black، 20، أ)؛
    أ = 1 + 25؛
    }
    }
    }
    }

  6. Zzombi يقول:

    كما أستطيع أن أعرف موقف من شأنها أن تعطي الانطباع عندما X و Y

  7. ديفي يقول:

    شريك، آخر ممتاز، واضحة وبسيطة، والبحث عن شيء ما أو شخص ما لشرح الامور على ما ينبغي أن يكون في جميع أنحاء الشبكة، وهذا فقط أنا الناس sirvio.Hay الذي يفسر في مدونة معقدة للغاية أن يشعر أنهم يعرفون الكثير. 10 قروش.
    الشكر والتحيات!

  8. باولو يقول:

    آخر ممتازة، أهنئكم، وأعتقد أن نفس الآخرين، واضح جدا وتفسير، وليس مثل الآخرين رأيت.
    لديك شيء في تقرير الكريستال الأساسية لبرنامج Visual Studio 8؟
    أنا جعلت العديد من التقارير ولم يمر عليه كمعلمات من شكل نافذة لتطبيق بعض المرشحات على الاستفسارات.
    شكرا

  9. جويل يقول:

    مرحبا، تحتاج إلى معرفة كيفية طباعة المعلومات أريد من الأشكال، من خلال النصوص من نص ejeplo، مواقع معينة ومحددة، وتولد لي معاينة قبل الطباعة، وليس كثيرا من ذلك، ولكن أريد أن تساعدني في أن. شكرا!

  10. blabla يقول:

    إذا كان لديك كنت مبرمجا، إذا كنت تريد شيئا لوضع رمز ليس هناك شيء أكثر واقعية لوضع الأسس، والجميع يضيف ما يريدون، وشكرا جزيلا

  11. سيلفستر يقول:

    تهنئة لبسيطة وواضحة
    لتوضيح ما.
    أطلب منكم يرجى شرح لي، وكيفية جعل PrintPage تدع اليوم والشهر والسنة اسم. ما هو رمز أن أضع في PrintDocument؟
    على سبيل المثال:
    أصدرت يوم ما؟ اسم الشهر من القيام به؟ من السنة؟
    شكرا جزيلا.

  12. رافائيل يقول:

    مرحبا إليشا، مثالا ممتازا، بسيط جدا ومفيدة، فقط اسمحوا لي أن أعرف كيف يمكنني القيام به لقول ورقة X إحداثيات، Y من الصفحة التي تريد طباعة المعلومات. أنا في حاجة الى ذلك لأنني لطباعة سلسلة من الرموز الشريطية في بضع صفحات التي لديها بالفعل 25 تسميات فارغة.

    يرجع الفضل في ذلك مسبقا.

    • أليشع يقول:

      في الرباط لديها الخصائص التي تسمح لك لتحديد الإحداثيات X، Y حيث المطبوعة. مجرد مسألة القيام ببعض التجارب وأنا متأكد من أن تتمكن من ايجاد حل لها.

      حظ

  13. عثمان يقول:

    شكرا يا للمساهمة، لقد كنت مفيدة للغاية، ولكن أود أن أعرف كيفية طباعة نتيجة استعلام في DataGrid

    شكرا

    • نرجس يقول:

      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 = كريستال تقرير عارض
      "نموذج Windows = FRM
      "DA = SQLDataAdapter
      "DT = DATATABLE

  14. ليونيل يقول:

    كما يمكن أن تجعل شكل لي س لديه خيار جديد

  15. يقول نيلسون:

    مرحبا، لقد تم اختبار أكثر من الأمثلة والنتائج التي هي كلها جيدة للغاية.
    شكرا جزيلا.
    ولكن الآن لدي مشكلة كبيرة قليلا:
    أون لاسترداد معلومات من جدول وقائمة يستغرق مني أكثر من صفحة وألا تذهب إلى الاجتماع على النحو التالي. وسأكون ممتنا على سبيل المثال من هؤلاء لك وسأكون أكثر من واضح.
    العمل مع VS.net 2008 وماي.

  16. مانويل جوزيه يقول:

    مرحبا أن مثل هؤلاء الرجال ولكن الحصول على خطأ في و، في رسالة الخطأ تقول مفقود يعلن ولكنني أود أن أعرف الطريقة التي تصرح به، وأتوقع ردكم السريع، وذلك بفضل ...

  17. دنكو يقول:

    caaaaaaaaaaapooooooooooooooo ...
    ولطباعة الصورة، فإنه سيكون مثل؟

    لا أستطيع العثور على ملف موجة ... ولكن منذ DrawImagen

  18. ساحة فرناندو يقول:

    مرحبا!
    مثيرة جدا للاهتمام سبيل المثال. أنا في برنامج C #.
    هل هناك أي طريقة لمعاينة ذلك؟
    تحية!

  19. ميجيل يقول:

    أود كثيرا لطباعة tesxtbox مع شخصيات قليلة، ولكن عندما أحاول طباعة حقل مذكرة، التي لديها خطوط متعددة، مما يعطيني خطأ. انه لا يحترم لي أن 80 حرفا في كل سطر، كما هو الحال في حقل المذكرة، وكتابة الخط حتى وقف كامل، وذلك لطباعة فقط في أول 80 حرف من كل فقرة.
    وأنا أقدر لك أن تقول لي كيف يمكن تصحيح هذا الخطأ.

  20. ليوبولد يقول:

    مهلا، أنت تعرف أنني حاولت في المثال الأول، ولكن لا حظ للطباعة، واستخدام طابعة PDF. وعندما تسنح لي فارغة. معي في عداد المفقودين الأمن أو تحديد العوامل الأخرى .. إذا يمكنك مساعدتي من فضلك؟

    شكرا لك.

  21. مانويل يقول:

    بقي أن أضيف على سبيل المثال لوضع حرف الإرجاع.
    يرجع الفضل في ذلك مسبقا،

  22. فرناندو يقول:

    تعرف كيف عليك ان تضع: 90 حرفا في كل سطر والقيام إرجاع

  23. GNZ يقول:

    حسنا ... أنت luciste مجنون!
    ميرسي Beaucoup

  24. جينا يقول:

    و XK يبدو كما لم يعلن عنها

  25. جوزيه يقول:

    جزء وحذفها، وترك فقط مع &
    لا شيء أكثر

  26. جوليان يقول:

    كنت رجلا مدرب إعادة عمل لي، وذلك بفضل.

  27. يوسف يقول:

    ممتاز ولكن أسأل مرة أخرى هل هناك أي طريقة لطباعة نتيجة استعلام في DataGridView؟

  28. كريستيان رويز يقول:

    يبدو لكم أقوم بطباعة محتويات DataGridView1

  29. kobellas يقول:

    أنا ذاهب مجنون!

    لدي كلمة وثيقة، والتي أدعو للطباعة،

    wdoc.print ()

    على أي حال، ليس لدي طابعة افتراضية ومقاعد البدلاء السوداء، واختيار الأول، إذا كنت تفعل ذلك مع الخالق PDF أو اللون. حاولت كل شيء من دون جدوى.

    شخص ما من شأنه أن يكون نوع بما فيه الكفاية ليقول لي رمز أن يطبع "wdoc" مع الطابعة أنا أختار؟

    شكرا جزيلا لك مقدما!

  30. مجهول يقول:

    مرحبا!

    أعجبني آخر، لكنني كنت الى حد ما في شك ...

    إذا على سبيل المثال لقد 2 النص، وكنت ترغب في طباعة نص TextBox1، كما أفعل أنا؟

  31. سانتاماريا جون يقول:

    المادة ممتاز، والحقيقة في أبسط أفضل. والباقي هو مجرد تجربة

  32. إيزابيل يقول:

    إذا بدلا من طباعة النص أنا imrimir 1
    داتاغريدفيف كما أغسطس

  33. helen87 يقول:

    مرحبا، أنا بعمل برنامج صغير مع VB.net وليس لدي مشكلة عند إرسال الطباعة.

    ما احتاج اليه هو لطباعة الجداول في قاعدة بيانات، يفترض أن يختار المستخدم أي جزء من قاعدة البيانات التي تريد طباعتها، ولكن ليس كما idicar لا تتم طباعة جميع قاعدة البيانات.

    وإذا كان أي شخص يمكن أن يساعد نقدر ذلك.
    تحية!

  34. إميليو يقول:

    جيد وكنت انتظر هذا رمز لطباعة الكريستال تقرير Report.PrintToPrinter (1، خطأ، 0، 0)
    لكن هذا الخط يرشد الطابعة لطباعة على التقصير هذا كافتراض واحتلت كما predertermina يملك الطباعة وإرسال آخر أشكركم على مساعدتكم مع بعض الرموز التي يمكن أن تقدم على المسار أو اسم من رمز لطباعة الشكر

  35. Kayien يقول:

    التحية والشكر لتقاسم المعارف الخاصة بك من الحقيقة أنا جديدة على هذا، ورؤية الشفرة أنا decuenta كيف بسيط يمكن أن تكون لتعلم البرمجة هو custion الممارسة وتفان ..

    سؤالي هو: لدي شكل الذي لديه 107 chechbox والنص 4 كما يمكنني أن أقوم بطباعة المعلومات وذلك لأن شكل ومضمون كثيرا جدا لاحتوائه على ورقة واحدة A4 نمط حرف

    وهذا ما أقوم به ولدي مثل واضح أن أفعل الأمر (إذا - أخرى - في ذلك الحين) لاختيار شكل لي اختيار conetenido ولكن بالنظر إلى الوقت الذي يمكن إرسالها للطباعة وإرسالها، بالإضافة إلى شكل وشكل المحتوى المحدد لا يفهم، واستخدام التقرير وضوح الشمس لا يسمح لي استخدام مربع: S انا متشابكة بحيث أنني لا أستطيع أن أفعل هنا ترك صورة واحدة http://img826.imageshack.us/img826/2738/14397131.jpg

  36. تاتيانا يقول:

    مثال جيد جدا. ولكن هناك أقوم بطباعة النص الذي يمر. وإذا كنت تحتاج لطباعة وثيقة لقد المحفوظة على جهاز الكمبيوتر الخاص بي؟ السؤال هو: أنا بحاجة لطباعة مستند لقد تم حفظها في C: \ \. المشكلة هي أن لدي setearle نطاق الصفحة الأولى لطباعة (XQ يست بحاجة الى وثيقة كاملة) ومن ثم طباعته. ماذا يمكنني ان افعل؟

    • أليشع يقول:

      سؤال يؤدي إلى العديد من الإجابات، وجميعها تعتمد على نوع الملف الذي تريد طباعته، لأنها ليست هي نفسها كملف نصي. أن جداول البيانات إكسل أو ملف صورة ما هو الملف الذي تريد طباعته؟

  37. وقال سيزار:

    مثال ممتاز لقد قمت بإعداد وسهل جدا.

    لدي العديد من الأسئلة فقط واحد رئيسي هو كيف يمكن للدلالة على إجراء للقيام خط فاصل. caundo لا يكفي النص على سطر واحد لكنه reequiere 2 أو أكثر؟

    شكرا

  38. كارلوس يقول:

    مرحبا، لدي مشكلة في رمز PrintDocument باسم "أمبير"، كما تقول خطأ ويقول لي الذي لم يعلن عنه ... إذا ما هي نوع من أجل حلحلة المشكلة ... شكرا

    • انجليكا يقول:

      أن تقول 'و' لا تشير إلا إلى amperson ما هو هناك. هذا السطر من التعليمات البرمجية ووصل النص. مجرد ترك الأمر كما 'و' وعلى استعداد!

      ليس إذا كنت قد اكتشفت بالفعل من قبل، ولكن لا تزال تترك لك الجواب.

      تحية!

  39. ألماني يقول:

    مثال جيد جدا لطباعة باستخدام PrintDocument وPrintDialog، ومع ذلك، مع هذه التعليمات في الصفحة القفزة؟ باستخدام e.hasmorepage عد لي صفحات لانهائية.

    شكرا

  40. naranjamarmota7 يقول:

    وكان هذا الطريق حقا بارد وسهل وغيرها الكثير من التعبير عن رمز في مساعدة كبيرة .... شكرا

  41. ميل يقول:

    Buenisimo .... شكرا جزيلا لمساعدتكم ..

  42. الطاعن يقول:

    مرحبا أريد أن زر لطباعة تقرير! ؟ كيف يمكن القيام بذلك
    صالح

  43. بيير المأجور يقول:

    ممتاز وساعدني كثيرا وكان حوالي 3 أيام يبحث عن هذا الصديق شكرا!

  44. menuenter يقول:

    عندي استفسار أن أكون قد نظرت في كل مكان وليس لدي أي جواب حتى الآن.
    الاستعلام بلدي هو:
    لدي نموذج Windows في vb.net وأنا بحاجة إلى طباعته، مشكلتي هي أن تكون طويلة جدا (لقد مكن الملكية autoscroll من النموذج)، أقوم بطباعة إلا ما لدي على الشاشة في ذلك الوقت، لم يكن كذلك بقية النموذج.
    استخدام هذا الرمز للطباعة:
    "طباعة شكل
    Btnimprimir_Click خاصة الفرعية (المرسل الأساسية ByVal البريد الالكتروني System.Object الأساسية ByVal، كما System.EventArgs) مقابض Btnimprimir.Click

    مع PrintForm1
    . PrintAction = Printing.PrintAction.PrintToPreview

    . طباعة (البيانات، PowerPacks.Printing.PrintForm.PrintOption.Scrollable)

    مع نهاية

    نهاية الفرعية

    إذا قد لا تتم طباعة نماذج من هذه الخصائص.

    جيد من أشكر بالفعل جزيلا لكم مقدما. -

  45. onieto يقول:

    مهلا، معلومات كبيرة، وشكرا جزيلا، أنا جديدة فائقة إلى هذا وليس شكل آخر من أشكال الطباعة وكافحت إلى حد ما مع فكرة الإحداثيات، وبمساعدة شبكة المطبوعة، وهنا هي رمز إذا مبتدئ مثلي لك يخدم:

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

    'وهذا هو للطباعة على شبكة بكسل 50 متباعدة مع التسميات التي تساعدك على تحديد ما الذي تريد طباعته

    خاصة الفرعية Button1_Click (الأساسية ByVal مرسل بواسطة البريد الالكتروني System.Object الأساسية ByVal، كما System.EventArgs) يعالج Button1.Click
    PrintDocument1.Print ()
    نهاية الفرعية

    PrintDocument1_PrintPage خاصة الفرعية (المرسل الأساسية ByVal البريد الالكتروني System.Object الأساسية ByVal، كما System.Drawing.Printing.PrintPageEventArgs) مقابض PrintDocument1.PrintPage
    CyanPen خافت وقلم جديد (Color.Cyan، 1)
    ذ قاتمة وصحيح

    لص = 1 إلى 23

    e.Graphics.DrawLine (cyanPen، 1، 1 + (ص * 50)، 850، 1 + (ص * 50))
    e.Graphics.DrawLine (cyanPen2، 1 + (ص * 50)، 1، 1 + (ص * 50)، 1150)
    e.Graphics.DrawString ((ذ * 50)، جديد الخط ("فيردانا"، 8، FontStyle.Bold) Brushes.Red، 40، -6 + (ص * 50))
    e.Graphics.DrawString ((ذ * 50)، جديد الخط ("فيردانا"، 8، FontStyle.Bold) Brushes.Red، -10 + (ص * 50)، 44)
    e.Graphics.DrawString ((ذ * 50)، جديد الخط ("فيردانا"، 8، FontStyle.Bold) Brushes.Red، 390، -6 + (ص * 50))
    e.Graphics.DrawString ((ذ * 50)، جديد الخط ("فيردانا"، 8، FontStyle.Bold) Brushes.Red، -10 + (ص * 50)، 544)
    التالي

    نهاية الفرعية
    ************************************************** ********************************

  46. إدواردو يقول:

    شكرا لك! انها ساعدتني كثيرا

  47. lover1986 يقول:

    يوم جيد ...
    كيف نعتذر لكنني يمكن أن تساعد في ...
    كما لا أستطيع طباعة صورة التسمية تحميلها في .....؟ أو picturebox .....؟ أشكركم مقدما من المساعدات ...

  48. وقال ايدو:

    ممتاز. ولكن كيف يمكن طباعة أكثر من 1 في الصفحة؟

  49. ميجيل يقول:

    أنا من مشاهدته قبل الطباعة باستخدام PrintToPreview

    شكرا

  50. ZOLRAK.MX يقول:

    Graicas لرمز لأنه من السهل جدا على طباعته طالما طبعت جميع المعلومات المطلوبة عن ورقة واحدة، لأن ما تحتاج لطباعة أكثر من ورقة واحدة، لأن ما هو الأمر لطباعة محتويات listview وتكون السجلات الجيدة واستخدام هذا الرمز بطباعة صفحة واحدة فقط وليس لمعرفة ما إذا كان أي شخص يعرف كيفية تحقيق قفزة من صفحة مطبوعة وجميع المعلومات وأنا سلفا شكرا جزيلا ؛)

تعليق