打印使用的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的应用程序的文件。

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

  1. Bitacoras.com 说:

    信息Bitacoras.com ...

    如果你愿意,你可以点击评价后Bitacoras.com。 谢谢....

    • gosuna说:

      这是伟大的,当您要打印的文本框在窗体上没有一份报告。

      不,如果你可以发布有关购买收据印在了ReportViewer服务器会自动默认为买,而无需打开的ReportViewer pirntdialog的染料的东西。

      再见,祝贺您的贡献。

    • 保罗说:

      好极了! 我爱简单。 即使运行方向和大小的页面设置

  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北京时间)
    {
    INT A = 50;
    (I = 0;我<10; I + +)
    {
    e.Graphics.DrawString(“SampleText”,新的Font(“宋体”,20 - I,FontStyle.Italic)Brushes.Black,20,);
    A = A + 25;
    }
    }
    }
    }

  6. zzombi说:

    我可以知道的位置,将给人的印象时,X和Y

  7. 戴维说:

    合作伙伴,优秀的职位,简单明了,看某人或某物解释的事情,因为他们应该是所有网站,仅此我sirvio.Hay的人觉得他们知道了很多在一个非常复杂的代码解释。 10点。
    感谢和问候!

  8. 保罗说:

    优秀的后期,我祝贺你,我想为他人,非常明确和解释,而不是像我所见过的人,相同的。
    有水晶报表上的一些基本的Visual Studio 8的吗?
    我提出了若干报告,并没有从窗口的形式传递参数,它适用于特定的过滤器查询。
    谢谢

  9. 乔尔说:

    您好,您需要知道如何打印从形式的信息,我想,文本框的文本ejeplo,具体和特定网站,并产生我在打印前预览,而不是它的,但我要帮我这一点。 谢谢!

  10. blabla说:

    你,如果你是一个程序员,如果你想要的东西,把代码有什么更实际,把基础知识,和每个人都增加了他们想要的东西,非常感谢你

  11. 西尔维斯特说:

    恭喜简单明了
    解释什么。
    我问,请你给我解释一下,如何使我们的PrintPage的一天,月份名称和年份。我的PrintDocument的代码是什么?
    例如:
    发行什么日子? 一个月做了新年的名称??
    非常感谢。

  12. 拉斐尔说:

    您好以利沙,一个很好的例子,非常简单和有用的,只是让我知道我可以告诉纸张的坐标X,您要打印信息页Ÿ。 我需要这个,因为我要在几页,已经有25个空白标签,条形码打印系列。

    感谢在前进。

    • 以利沙说:

      中的DrawString属性,允许您指定坐标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()

      “回购= ReportDocument的
      “CRV的水晶报表
      “Windows窗体= FRM的
      “大= SqlDataAdapter的
      “DT =的DataTable

  14. 莱昂内尔说:

    我可以做我的形式q则有新的选项

  15. 尼尔森说:

    你好,我一直在测试的例子和结果都非常好。
    非常感谢。
    但现在我有一个伟大的小问题:
    “M恢复从表和列表,它需要我多页的信息,而不是去如下的会议。 我欣赏你的那些例子,我会再清楚不过。
    2008年与VS.net和MySQL的工作。

  16. 若泽·曼努埃尔说:

    你好,这样的男人,但错误与错误消息中说,遗失声明,但我想知道哪种方式说明它,我期待您的及时答复,谢谢......

  17. 电工说:

    caaaaaaaaaaapooooooooooooooo ...
    和打印照片,它会是什么样子?

    我无法找到一个波形文件......但因为DrawImagen

  18. 广场费尔南多说:

    您好!
    非常有趣的例子。 我在C#程序。
    有没有办法预览吗?
    的问候!

  19. 米格尔说:

    我非常喜欢,打印几个字符tesxtbox,但是当我尝试打印一个备注字段,其中有多个行,它给了我一个错误。 它不尊重我,每行80个字符,因为它是在备注字段,写,直到完全停止线,使打印出每一段的第80个字符。
    我很欣赏你告诉我怎样才能纠正这一错误。

  20. 利奥波德说:

    嘿,你知道我想的第一个例子,但没有运气打印,使用PDF打印机。 每当我得到的空白。 与我同在缺少安全或指定其他参数...... 如果你能帮我吗?

    谢谢。

  21. 曼努埃尔说:

    仍然添加的例子,把回车。
    提前感谢,

  22. 费尔南多说:

    你知道你必须把每行90字,做一个回车

  23. GNZ说:

    嗯......你luciste疯狂!
    留言Merci Beaucoup

  24. GINA说:

    XK出现作为未经宣布

  25. 何塞说:

    部分与它删除,只是离开&
    而已

  26. 朱利安说:

    你老板的人重新担任我,谢谢。

  27. 约瑟夫说:

    优秀的,但我再次询问是否有任何方式打印在一个DataGridView查询的结果吗?

  28. 克里斯蒂安·鲁伊斯说:

    像你这样的声音,我打印内容DataGridView1

  29. kobellas说:

    我要疯了!

    我有一个word文档,我称之为打印,

    wdoc.print()

    无论如何,我有默认打印机和黑色长凳,让我选择,如果我做PDF Creator或颜色。 我想尽一切办法都无济于事。

    有人会好心地告诉我,我选择的打印机打印的“wdoc”代码?

    非常感谢你提前!

  30. 匿名说:

    您好!

    我喜欢的职位,但我是有点怀疑......

    例如,如果我有2框,我要打印TextBox1的文本,像我这样吗?

  31. 约翰·圣玛丽亚说:

    优秀的文章,在最简单的最好的真理。 休息只是遇到

  32. 伊莎贝尔说:

    如果不是打印文本,我imrimir 1
    DataGridView中为八月

  33. helen87说:

    您好,我用VB.net做一个小程序,我有一个问题,当发送打印。

    我需要的是打印数据库中的表,它假设用户选择您要打印的数据库的一部分,但不作为idicar不打印所有的数据库。

    如果有人能帮助将不胜感激。
    的问候!

  34. 埃米利奥说:

    好,我用这个代码打印水晶报表Report.PrintToPrinter(1,0,0,FALSE)
    但此行指示打印机打印到默认情况下将作为默认占用作为predertermina有打印和发送另一个一些代码,可以给路径或名称从代码打印感谢你感谢你的帮助

  35. kayien说:

    的问候和感谢你对我这个新的真理的知识共享,看到你的代码,我decuenta多么简单的事情是学习编程的实践和奉献custion ......

    我的问题是我有一个表格,其中有107 chechbox和4框,我可以做我打印的信息,因为形式有太多的内容,以适应到一张A4信纸样式

    这是我做什么,我有如此明确,我做了一个命令(如果 - 其他 - 然后)我选择的形式,conetenido的选择,但给定的时间,我可以把它打印在另外的形式和格式发送所选内容不理解和使用水晶报表,让我使用复选框:•我纠结,我不能在这里做的,留下一个图像http://img826.imageshack.us/img826/2738/14397131.jpg

  36. 塔蒂亚娜说:

    很好的例子。 但我有打印的文字通。 如果我需要打印文件,我已经保存在我的电脑? 现在的问题是:我需要打印文件,我已经保存在C:\ \。 问题是,我有setearle第一页范围打印(XQ不需要整个文档),然后打印。 我能做些什么呢?

    • 以利沙说:

      问题导致许多答案都依赖于您要打印的文件类型,因为它不是作为一个文本文件,Excel电子表格或图像文件。 您要打印的文件是什么?

  37. 塞萨尔说:

    很好的例子,我成立了,是很容易的。

    我有几个问题的主要原因之一是如何表示的程序做换行符。 不caundo足够的文字一行,但reequiere 2个或更多?

    谢谢

  38. 卡洛斯说:

    你好,我有一个PrintDocument的“放大器”的代码中的问题,她说错误,并告诉我,是不是宣布......如果他们是这样一种排序问题...谢谢

    • 当归说:

      ,说'和'是指只有一个amperson有什么。 这行代码是串联文本。 刚刚离开它作为'&'和准备!

      如果你已经发现之前,但仍留下你的答案。

      的问候!

  39. 德国说:

    很好的例子,使用的PrintDocument的PrintDialog,但这些说明作为跳页,打印? 使用e.hasmorepage指望我无限的页面。

    谢谢

  40. naranjamarmota7说:

    这真的很酷,很容易和太多的人表示在代码中是有很大的帮助.... 谢谢

  41. 梅尔说:

    buenisimo ....非常感谢您的帮助......

  42. 开膛手说:

    你好,我想打印报告按钮来! 怎么能做到这一点
    赞成

  43. 皮埃尔·哈克说:

    优秀帮了我很多,约3天,感谢朋友!!

  44. menuenter说:

    我有一个查询,我已经到处找,我还没有答案。
    我的查询是:
    我有1在vb.net中窗口的形式和我需要将其打印出来,我的问题是,要成为这么久我已经启用了自动滚屏的形式财产,我打印的只有我在屏幕上有时间,不使其余的形式。
    使用此代码来打印:
    '打印表格
    Btnimprimir_Click私人小组(作为System.Object的,BYVAL e由于的BYVAL发件人)处理Btnimprimir.Click

    与PrintForm1
    。PrintAction = Printing.PrintAction.PrintToPreview

    打印(我PowerPacks.Printing.PrintForm.PrintOption.Scrollable)

    结尾

    END SUB

    如果没有可打印形式的这些特点。

    好,从已经预先感谢您非常 -

  45. onieto说:

    嘿,大信息,非常感谢你,我到这一点,没有其他形式的打印超级新坐标的想法有些挣扎,和一个网格印的帮助下,这里的代码,如果你像我这样的新手服务:

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

    “这是你要打印网格间隔为50像素标签,帮助您找到印刷

    私人小组中button1_Click(0 System.Object的,BYVAL e由于发件人)把手Button1.Click
    PrintDocument1.Print()
    END SUB

    私人小组PrintDocument1_PrintPage(BYVAL发件人作为System.Object的,BYVAL e由于System.Drawing.Printing.PrintPageEventArgs)处理PrintDocument1.PrintPage
    CyanPen点心Color.Cyan,(1)随着新钢笔
    昏暗Ÿ作为整数

    为y = 1至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),(新字体“宋体”,8,FontStyle.Bold)Brushes.Red,40 -6 +(Y * 50))
    e.Graphics.DrawString((Y * 50),(新字体“宋体”,8,FontStyle.Bold)Brushes.Red,-10 +(Y * 50),44)
    e.Graphics.DrawString((Y * 50),(新字体“宋体”,8,FontStyle.Bold)Brushes.Red,390,-6 +(Y * 50))
    e.Graphics.DrawString((Y * 50),(新字体“宋体”,8,FontStyle.Bold)Brushes.Red,-10 +(Y * 50),544)
    未来

    END SUB
    ************************************************** ********************************

  46. 爱德华说:

    谢谢! 这对我帮助很大

  47. lover1986说:

    好日...
    如何很抱歉,但我可以帮助...
    我可以打印标签图像加载到一个......? 或一个PictureBox ......? 我感谢你提前援助...

  48. 埃杜说:

    优秀。 但是,如何可以打印超过100页吗?

  49. 米格尔说:

    我之前查看打印PrintToPreview

    谢谢

  50. ZOLRAK.MX说:

    graicas代码,因为它是很容易,只要所有必需的信息印在一张纸上打印,因为我需要的是打印多个工作表的原因是什么打印命令ListView的内容和良好的记录,并使用此代码只打印一页,不知道,如果有人知道如何从打印的页面,所有信息的飞跃,事先我非常感谢你 ;)

评论