博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 中打印、预览、打印机设置和打印属性的方法
阅读量:5317 次
发布时间:2019-06-14

本文共 2067 字,大约阅读时间需要 6 分钟。

 private void Form1_Load(object sender, System.EventArgs e)
  {
   //获取或设置一个值,该值指示是否发送到文件或端口
   printDocument1.PrinterSettings.PrintToFile = true;
   //设置打印时横向还是纵向
   printDocument1.DefaultPageSettings.Landscape = true;
  }
  private void fileOpenMenuItem_Click(object sender, System.EventArgs e)
  {
   OpenFile();
  }
  private void OpenFile()
  {
   openFileDialog1.Filter = "Text Files (*.txt)|*.txt";//打开文本的类型
   //获取文件对话框的初始目录(StartupPath)获得bin文件下的文件
   openFileDialog1.InitialDirectory = System.Windows.Forms.Application.StartupPath;
   DialogResult userResponse = openFileDialog1.ShowDialog();
   //MessageBox.Show(userResponse.ToString());
   if (userResponse==DialogResult.OK)
   {
    filePath = openFileDialog1.FileName.ToString();//转换文件路径
   }
  }
  private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
   //充分利用e
  {
   
   int topMargin = printDocument1.DefaultPageSettings.Margins.Top;//上边距
   int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;//左边距
   float linesPerPage = 0;//页面行号
   float verticalPosition = 0;//绘制字符串的纵向位置
   float horizontalPosition=leftMargin;//左边距
   string textLine = null;//行字符串
   currentLine = 0;//行计数器
//   float Xline=0;
   //int line=0;
   // Calculate the number of lines per page.
   linesPerPage = e.MarginBounds.Height / myFont.GetHeight(e.Graphics);
//   Xline=e.MarginBounds.Width/myFont.GetHeight();
   
            // for each text line that will fit on the page, read a new line from the document
   while (currentLine < linesPerPage )
   {
    textLine = streamToPrint.ReadLine();
    if(textLine == null)
    {
     break;
    }
    // 求出已经打印的范围
    
    verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);
    // 设置页面的属性
    e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
    // 增加行数
    currentLine ++;
    
   }
   // If more lines of text exist in the file, print another page.
   if (textLine != null)
   {
    e.HasMorePages = true;
   }
   else
   {
    e.HasMorePages = false;
   }
  }
  private void printPreviewButton_Click(object sender, System.EventArgs e)
  {
   try
   {
    streamToPrint = new StreamReader(filePath);
    try
    {
     PrintPreview();
    }
  

转载于:https://www.cnblogs.com/zengjiliang/archive/2011/10/08/2202091.html

你可能感兴趣的文章
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
使用命令创建数据库和表
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
linux下Rtree的安装
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>
【模板】对拍程序
查看>>
【转】redo与undo
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>