zoukankan      html  css  js  c++  java
  • 打印DataGridView类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    using System.Drawing.Printing;
    using System.Windows.Forms;

    /// <summary>
    /// <para>打印DataGridView</para>
    /// <para>用法:</para>/// <para>   
    /// DataGridViewPrint dgvPrint = new DataGridViewPrint(new DataGridView[] { DataGridView1,DataGridView2 });</para>
    /// <para>   dgvPrint.Print();</para>
    /// </summary>
    public class DataGridViewPrint
    {   
        private DataGridView[] dataGridView;   
        private PrintDocument printDocument;   
        private PageSetupDialog pageSetupDialog;   
        private PrintPreviewDialog printPreviewDialog;   
        private int dgvIndex = 0;   
        private int rowCount = 0;   
        private int colCount = 0;   
        private int x = 0;   
        private int y = 0;   
        int i = 0;   
        private int rowGap = 60;   
        private int leftMargin = 50; 
        private Font font = new Font("Arial", 10);
        private Font headingFont = new Font("Arial", 11, FontStyle.Underline);  
        private Font captionFont = new Font("Arial", 10, FontStyle.Bold);
        private Brush brush = new SolidBrush(Color.Black);
        private string cellValue = string.Empty; 

        public DataGridViewPrint(DataGridView[] dataGridView)   
        {       
            this.dataGridView = dataGridView;  
            printDocument = new PrintDocument();       
            printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
        }  
       
        private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)   
        {      
            for (; dgvIndex < dataGridView.Length; dgvIndex++)     
            {      
                rowCount = dataGridView[dgvIndex].Rows.Count - 1;  
                colCount = dataGridView[dgvIndex].ColumnCount;      
                //print headings          
                y += rowGap;       
                x = leftMargin;        
                for (int j = 0; j < colCount; j++)    
                {          
                    if (dataGridView[dgvIndex].Columns[j].Width > 0)       
                    {             
                        cellValue = dataGridView[dgvIndex].Columns[j].HeaderText;       
                        e.Graphics.FillRectangle(new SolidBrush(Color.LightGray), x, y, dataGridView[dgvIndex].Columns[j].Width, rowGap);  
                        e.Graphics.DrawRectangle(Pens.Black, x, y, dataGridView[dgvIndex].Columns[j].Width, rowGap);            
                        e.Graphics.DrawString(cellValue, headingFont, brush, x, y);         
                        x += dataGridView[dgvIndex].Columns[j].Width;         
                    }       
                }        
                //print all rows       
                for (; i < rowCount; i++)     
                {           
                    y += rowGap;   
                    x = leftMargin;    
                    for (int j = 0; j < colCount; j++)   
                    {              
                        if (dataGridView[dgvIndex].Columns[j].Width > 0)    
                        {                
                            cellValue = dataGridView[dgvIndex].Rows[i].Cells[j].Value.ToString();  
                            e.Graphics.DrawRectangle(Pens.Black, x, y, dataGridView[dgvIndex].Columns[j].Width, rowGap);      
                            e.Graphics.DrawString(cellValue, font, brush, x, y);           
                            x += dataGridView[dgvIndex].Columns[j].Width;            
                        }    
                    }             
                   
                    if (y >= e.PageBounds.Height - 80)   
                    {                
                        // 允許多頁打印             
                        y = 0;             
                        e.HasMorePages = true;     
                        i++;        
                        return;     
                    }        
                }       
                y += rowGap;   
                for (int j = 0; j < colCount; j++)     
                {            
                    e.Graphics.DrawString(" ", font, brush, x, y); 
                }       
                i = 0;  
            }      
            e.HasMorePages = false;  
        }  
       
        public PrintDocument GetPrintDocument()
        {     
            return printDocument;
        }  
       
        public void Print()
        {     
            try    
            {      
                pageSetupDialog = new PageSetupDialog(); 
                pageSetupDialog.Document = printDocument;       
                pageSetupDialog.ShowDialog();        
                printPreviewDialog = new PrintPreviewDialog();
                printPreviewDialog.Document = printDocument;      
                printPreviewDialog.Height = 600;      
                printPreviewDialog.Width = 800;   
                printPreviewDialog.ShowDialog();     
            }     
            catch (Exception e)   
            {          
                throw new Exception("Printer error." + e.Message); 
            }
        }
    }

  • 相关阅读:
    docker-redis
    docker-nginx
    docker-tomcat
    JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点
    Python json
    Python 模拟鼠标
    Python 取列表的前几个
    winfrom 图片等比例压缩
    winfrom 改变图片透明度 Alpha
    winform 实现类似于TrackBar的自定义滑动条,功能更全
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1778730.html
Copyright © 2011-2022 走看看