• [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 2005 System Views Map
    SQL语句实现移动数据库文件
    重写系统存储过程:sp_spaceused
    MSSQL2005中的架构与用户
    根据时间段计算有n年n月n天
    Linux中的环境变量 (转)
    计算工龄,格式为n年n月n天
    学习递归CTE
    分区表应用例子
    根据备份文件直接还原数据库
  • 原文地址:https://www.cnblogs.com/hcbin/p/1688974.html
Copyright © 2020-2023  润新知