打印c#winform申请表

打印c#winform申请表,c#,winforms,printing,C#,Winforms,Printing,我很惊讶这看起来有多困难。我“只是”想打印我的表单(它是发票),并确保它打印整个表单(而不仅仅是屏幕上显示的内容)?我可以在表单上修改我想要的任何内容。那么我如何设置它,使它完美地打印到标准字母大小的纸张上,并且不允许用户调整大小,等等。他们应该像打印一样看到它。。也许他们可以放大和缩小,但不需要重新调整大小,等等 我认为reportviewer控件可以方便地处理所有的打印和大小调整工作。。但该控件似乎不适合于单个记录显示。(整个报告可能有一个标题!看起来很疯狂) 所以,除非我错了,也许有人可以

我很惊讶这看起来有多困难。我“只是”想打印我的表单(它是发票),并确保它打印整个表单(而不仅仅是屏幕上显示的内容)?我可以在表单上修改我想要的任何内容。那么我如何设置它,使它完美地打印到标准字母大小的纸张上,并且不允许用户调整大小,等等。他们应该像打印一样看到它。。也许他们可以放大和缩小,但不需要重新调整大小,等等

我认为reportviewer控件可以方便地处理所有的打印和大小调整工作。。但该控件似乎不适合于单个记录显示。(整个报告可能有一个标题!看起来很疯狂)

所以,除非我错了,也许有人可以给我所有要设置的属性,等等,以便为一张标准纸张(8.5 x 11)创建一个静态大小的常规表单?然后告诉我打印整个东西的方法,而不仅仅是“打印屏幕”


我读过很多关于使用“printscreen”和使用GDI+的想法(我不完全理解如何使用它)。。似乎没有什么比这更适合我。

我建议使用报表查看器和rdlc报表。您可以仅对一条记录使用它,并且可以包含发票行项目的子报表。不需要在标题中包含所有内容

这不是一个答案,但这就是为什么使用pdf。它可以完美地生成特定于打印机的设计文档。我建议您使用.Net库中的pdf writer之一。我正在使用Telerik解决方案和其他在您打印时介绍的相关内容,就像您绘制的一样:在PrintPage事件中使用e.Graphic对象。您可以选择并设置分辨率(至少150dpi),然后向页面添加内容,直到您满意为止。只要你只打印一页,顺序就无关紧要(重叠部分除外),并且你可以自由地将位图(右dpi!)行等与任何字体和笔/刷的文本混合。。请参见打印方式与绘制方式相同:在PrintPage事件中使用e.Graphic对象。设置分辨率(至少150dpi),然后向页面添加内容。只要你只打印一个页面顺序就没有多大关系(除了重叠部分),你可以自由地将位图(右dpi!)行等与任何字体和笔/画笔的文本混合。请参阅,这将构建一个可打印的位图。请参阅使用PrintPage事件的示例。您所说的“向页面添加内容”是指以编程方式构建整个输出?我不喜欢这个,我更喜欢使用设计师的UI。(我不喜欢维护构建整个UI/报告类型屏幕的代码),我没有行项目(实际上数据集上只有几个字段)。那么你是如何工作的呢?我甚至不知道如何在报表主部分中只显示一个简单的单值字段。@daBich它应该与您给出的列表相同。将数据源设置为数据集。您可能需要将单个对象(如果您正在传递一个业务对象)包装在一个只包含一个项的列表中,但它工作得很好。哇。。直到现在,我才真正尝试过信仰的飞跃,是的,它很好地发挥了作用。。巫师把我引入歧途;)