.net打印控件基本用法

1、在winform上加如下控件

2、代码和用法如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Winform
{
    /*
     在 Windows 窗体中进行打印主要包括以下两个方面:使用 PrintDocument 组件(Windows 窗体)组件来使用户可以打印;使用 PrintPreviewDialog 控件(Windows 窗体)控件、 PrintDialog 组件(Windows 窗体)组件和 PageSetupDialog 组件(Windows 窗体)组件向了解 Windows 操作系统的用户提供熟悉的图形界面
     * printdocument使用方法:1、创建;2、在printpage事件中写每一页的打印逻辑;3、调用print方法
     * printPreviewControl用法:1、创建;2、将document属性和printdocument关联;3、在printdocument的printpage事件里写打印逻辑;4、运行程序后会自动调用printpage事件;5、如果要刷新就用InvalidatePreview函数
     */
    public partial class UsageOfControl6 : Form
    {
        string documentContents;//总打印字符
        string stringToPrint;///要打印的
        public UsageOfControl6()
        {
            InitializeComponent();
            ///考虑printPreviewControl组件在初始化时就调用了printdocument的printpage事件,在这里初始化打印数据
            using (FileStream stream = new FileStream(@"d:\redist.txt", FileMode.Open))
            using (StreamReader reader = new StreamReader(stream))
            {
                documentContents = reader.ReadToEnd();
            }
            stringToPrint = documentContents;
        }

        private void UsageOfControl6_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            printPreviewDialog1.Document = printDocument1;//打印预览控件
            printDialog1.Document = printDocument1;//打印设置控件
            pageSetupDialog1.Document=printDocument1;//页面设置控件
            printPreviewControl1.Document = printDocument1;
            

            using (FileStream stream = new FileStream(@"d:\redist.txt", FileMode.Open))
            using (StreamReader reader = new StreamReader(stream))
            {
                documentContents = reader.ReadToEnd();
            }
            stringToPrint = documentContents;

            if (printDialog1.ShowDialog()==DialogResult.OK)///通过printDialog1来设置printdocument1的属性:打印机,打印页数,打印方向 
            {
                pageSetupDialog1.ShowDialog();///打印纸设置,边距,页眉,纸大小,也可以在printDocument1_PrintPage事件中获取e.PageSettings来设置
                this.printPreviewDialog1.ShowDialog();///打印预览
                printDocument1.Print();
                printPreviewControl1.InvalidatePreview();////刷新,会再次调用printdocument的printpage事件
            }

        }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            int charactersOnPage = 0;
            int linesPerPage = 0;
            // Sets the value of charactersOnPage to the number of characters 
            // of stringToPrint that will fit within the bounds of the page.
            //算出stringToPrint铺满打印页时的打印行数和字符数
            e.Graphics.MeasureString(stringToPrint, this.Font,
                e.MarginBounds.Size, StringFormat.GenericTypographic,
                out charactersOnPage, out linesPerPage);

            // Draws the string within the bounds of the page.///打印本页文字
            ///除了打印文字还可以打印线条,图形,屏幕截图等,可以在批定的位置打
            e.Graphics.DrawString(stringToPrint, this.Font, Brushes.Black,
            e.MarginBounds, StringFormat.GenericTypographic);



            // Remove the portion of the string that has been printed.
            stringToPrint = stringToPrint.Substring(charactersOnPage);//下一页要打的

            // Check to see if more pages are to be printed.
            e.HasMorePages = (stringToPrint.Length > 0);///如果没有打印完就打印下一页,会自动调用这个事件来打印下一页

            // If there are no more pages, reset the string to be printed.
            if (!e.HasMorePages)
                stringToPrint = documentContents;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            printPreviewControl1.StartPage += 1;///下一页
        }

        private void button3_Click(object sender, EventArgs e)
        {
            printPreviewControl1.StartPage -= 1;///上一页
        }

        private void button4_Click(object sender, EventArgs e)
        {
            printPreviewControl1.Zoom += 0.1;///放大
        }

        private void button5_Click(object sender, EventArgs e)
        {
            printPreviewControl1.Zoom -= 0.1;//缩小
        }
    }
}
View Code

 

转载于:https://www.cnblogs.com/shengyu-kmust/p/4478810.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本DataGridView打印控件.NET打印控件5.6版(含报表模板设计组件)2014年6月22日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB打印、C#打印都是可以的),有帮助文档与使用实例。 与上一版本的5.5版相比,新控件5.6版的主要更改如下: 1、增加了一个新打印组件SimpleReport组件,该组件与DGVPrint组件一样在运行时可进行打印参数设置,但比DGVPrint组件功能更强大,可以自动管理多个打印方案,在打印预览时可以自由在各个打印方案之间切换;可以在打印参数设置窗口中动态定义多表头,还可以像EasyReport组件一样设置和使用参数变量(具体使用效果参见实例程序); 2、解决了EasyReport组件在插入变量参数时,变量参数未排序导致查找不方便的问题; 3、在打印预览界面添加了简单的双面打印功能。(打印预览界面工具栏中的“打印\双面打印”菜单); 4、其他一些完善,比如DGVPrint组件中设置的行高无效等问题。 本控件特色: 1、强大的DataGridView打印功能,不仅可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印打印DGV表格,基本上能完全按DGV控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格对齐方式等打印出来,文字图像都可以打印,而且是完全根据表格当前的显示顺序进行打印的,基本上做到了所见即所得的打印。 2、报表设计功能。报表模板设计组件EasyReport与WebEasyReport组件可以设计普通报表、分组报表、套打模板等,分别以DataGridView为数据源。控件的位置以毫米为计量单位,定位准确,很适合套打单据设计。 3、强大的图表打印功能。5.2版控件新增了一个Chartlet的组件,使用非常方便,可以生成柱形图、饼图、折线图等多种图形,而且可以设置2D或3D效果,既可以在打印控件打印出来,也可以在Graphics对象中显示。 4、分组汇总打印DataGridVeiw功能,每组还可以自动换新页打印,还可以自动增加行号。 5、强大的文本打印输出功能,控件提供多个文本打印重载函数,打印文本时,如果需要,控件会自动换行和换页打印输出。还增加了以指定行间距及字符间距打印文本的功能,可以用固定行距,也可以用单倍或多倍行距打印文本。 6、强大的绘图功能,基本.NET的GDI+的绘图函数(如直线、矩形、路径、多边形、曲线等)都有,只有个别函数的名称有点区别。 7、支持同一文档多种版面格式打印(类似于Word中的节的功能):对同一份文档,不同的页面可以设置不同的格式(纸张大小、纸张方向、页边距),只需要在新增一页时在NewPage方法中指定要使用的页面格式即可,使用非常简单。 8、报表文件保存功能。本控件允许将当前打印预览的内容保存为报表文件,以后使用本控件重新打开该报表文件即可重现原来保存报表时的打印内容。 9、Excel导出功能,可以将DataGridView和GridView导出为Excel文件,5.2版控件还增加了不依赖Office的导出Excel功能,而且速度非常快,5.4版还增加了合并单元格的导出功能。 10、打印DataGridView时的打印方案保存与读取功能。可以将当前打印参数保存为打印方案文件,或者从保存的打印方案文件中读取打印参数。 11、水印打印功能。根据需要,可以在页面中打印或不打印以半透明空心文字打印水印。 12、强大的容器控件打印功能(DrawPanel函数)。借助该函数,您只需要在您的容器控件中设计好要打印的内容及打印内容的相对位置,控件轻松帮你打印出来(如果超过一页,控件会自动换页续打)。 13、特殊文字效果打印功能。控件具有打印浮雕文字、阴影文字、空心文字、块文字的功能。 14、页眉页脚中既可打印文字,也可打印图像,或者即打印图像又打印输出文字。 15、图像与图标打印输出功能。 16、多表头(跨行跨列的复杂表头)打印功能,多表头组件支持多表头显示与打印、单元格内容的合并显示、打印与导出。 17、自定义纸张支持功能。 18、纸张背景图片设置打印功能。 19、.NET4.0支持功能(是单独的一个文件)。 20、直接打印窗口中的TreeView控件功能。 21、打印窗口中的ListView功能。 22、RichTextBox控件的RTF文本打印功能。 23、斜线表头打印功能(5.4版新增)。 24、二维码打印功能(5.5版本增加)。 25、5.6版新增的SimpleReport组件允许您在一个方案文件中管理多个打印方案,在打印预览时能自由在各个打印方案之间切换。 我将持续改进该控件,并将不断推出控件的新版本,要查看或下载控件的升级版本,请登陆网站:http://myyouping.download.csdn.n
VB.NET是一种面向对象的编程语言,可用于开发Windows应用程序。如果要实现箱贴打印功能,可以使用VB.NET打印功能和Windows Forms控件。 首先,我们可以使用VB.NET打印功能来设置打印机和打印参数。可以使用PrintDocument类来创建一个新的打印文档对象,并设置打印参数,如纸张尺寸、边距、打印方向等。 然后,我们可以使用Windows Forms控件中的Label控件来设计箱贴的样式。可以调整Label控件的大小、字体、颜色等属性,以满足打印箱贴的需求。可以使用Label控件的Text属性来设置箱贴上的文本内容。 接下来,我们可以使用VB.NET中的打印事件来处理打印过程。可以使用PrintPage事件来绘制需要打印的内容。在PrintPage事件的处理程序中,可以使用Graphics对象来绘制Label控件或其他需要打印的内容,并使用PrintDocument类的Print方法将内容发送到打印机。 最后,可以使用VB.NET打印预览功能来查看打印效果。可以使用PrintPreviewDialog控件来创建一个打印预览对话框,并将PrintDocument对象与该对话框关联。可以使用PrintPreviewDialog控件的ShowDialog方法来显示打印预览对话框。 通过以上步骤,我们可以在VB.NET中实现箱贴打印功能。可以根据需要调整打印参数、设计打印样式,并使用打印事件来处理打印过程。最后,使用打印预览功能来查看打印效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值