zoukankan      html  css  js  c++  java
  • Winform的技巧琐碎总结简单打印功能实现

    一、C#实现打印功能操作通常包括以下四个功能。
    1、打印设置 设置打印机的一些参数比如更改打印机驱动程序等。
    2、页面设置 设置页面大小纸张类型等。
    3、打印预览 类似于word中的打印预览。
    4、打印。下面就向你具体介绍操作的步骤。
    二、实现打印功能的步骤
    第一步:(添加事件):若实现打印功能首先构造PrintDocument对象添加打印事件:
    PrintDocument printDocument; 
    private void InitializeComponent() 

    printDocument=new PrintDocument(); 
    printDocument.PrintPage +=  new PrintPageEventHandler (this.printDocument_PrintPage); 

    第二步:实现第一步的的事件委托方法(printDocument_PrintPage)
    实现此方法过程中用到了StringReader类,必须先定义,private StringReader LineReader = null; //字符串流对象,一行一行读取文本
    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
            {

                Graphics g = e.Graphics; //获得绘图对象 
                float linesPerPage = 0; //页面的行号 
                float yPosition = 0; //绘制字符串的纵向位置 
                int count = 0; //行计数器 
              
                float leftMargin = e.MarginBounds.Left; //左边距 
                float topMargin = e.MarginBounds.Top; //上边距 
                string line = null; //行字符串 
                Font printFont = this.richTextBox1.Font; //当前的打印字体

                SolidBrush myBrush = new SolidBrush(Color.Black);//刷子
     
              linesPerPage =  e.MarginBounds.Height / printFont.GetHeight(g); //每页可打印的行数 
                //逐行的循环打印一页 
                while (count < linesPerPage && ((line = LineReader.ReadLine()) != null))
                {
                    yPosition = topMargin + (count * printFont.GetHeight(g));
                    g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());
                    count++;
                }
                if (line != null)
                    e.HasMorePages = true;
                else
                    e.HasMorePages = false;
            }
    第三步:打印设置功能的实现
    打印设置,构造打印对话框,将对话框中设置的Document属性赋给printDocument这样会将用户的设置自动保存到printDocument的PrinterSettings属性中
    protectedvoid FileMenuItem_PrintSet_Click( object sender,EventArgs e) 

    PrintDialog printDialog = new PrintDialog(); 
    printDialog.Document = printDocument; 
    printDialog.ShowDialog(); 
    }
    第四步:打印预览功能实现
    此功能和打印设置原理相同,调出printPreviewDialog对话框即可,但值得注意的是必须实例化StringReader对象,lineReader = new StringReader(textBox.Text)。

    protected void FileMenuItem_PrintView_Click( object sender,EventArgs e) 

     PrintPreviewDialog printPreviewDialog =  new PrintPreviewDialog(); 
     printPreviewDialog.Document = printDocument; 
     lineReader = new StringReader(textBox.Text); 
     try

    printPreviewDialog.ShowDialog(); 

    catch(Exception excep) 

    MessageBox.Show(excep.Message,"打印预览出错", MessageBoxButtons.OK, 
     MessageBoxIcon.Error); 

    }
    第五步:就是打印功能的实现,和打印预览注意的地方一样注意实例化StringReader对象
    protected void FileMenuItem_Print_Click(object sender,EventArgs e) 

     PrintDialog printDialog = new PrintDialog(); 
     printDialog.Document = printDocument; 
     lineReader = new StringReader(textBox.Text); 
     if (printDialog.ShowDialog() == DialogResult.O
     { 
    try

    printDocument.Print(); 

    atch(Exception excep) 
     { 
    MessageBox.Show(excep.Message, "打印出错", 
     MessageBoxButtons.OK, 
     MessageBoxIcon.Error); 
    printDocument.PrintController.OnEndPrint(new PrintEventArgs()); 
     } 

    }

    注:文中的代码大部分引用互联网上的,本人仅作了总结归纳。

  • 相关阅读:
    mysql通过一张表更新另一张表
    申请微信支付填错对公账号的解决办法
    radio 实现点击两次 第一次点击选中第二次点击取消
    C#修改下拉框选项的高度
    Centos7 用yum命令安装LAMP环境(php+Apache+Mysql)以及php扩展
    php备份数据库
    windows环境下 composer 的安装与使用
    PHP获取多维数据的交集与差集
    JS 图片懒加载
    搭建 window + nginx + php 开发环境
  • 原文地址:https://www.cnblogs.com/fuchongjundream/p/2425053.html
Copyright © 2011-2022 走看看