zoukankan      html  css  js  c++  java
  • [C#] 打印DataGridView类

    来源:http://topic.csdn.net/u/20081111/14/84a390dd-5665-445e-897a-2c728dd865b8.html

    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);
    }
    }
    }
  • 相关阅读:
    Sql Server 跨服务器连接
    ASCII码与16进制的互相转换(表)
    c#多线程 Invoke方法的使用
    登陆时验证码的制作(asp.net)
    jQ&js给label
    IT行业的一些专业术语
    html div 加边框样式
    分布式技术 memcached
    分布式技术 webservice
    MVC 绑定 下拉框数据
  • 原文地址:https://www.cnblogs.com/hcbin/p/1688974.html
Copyright © 2011-2022 走看看