📄 datagridprinter.cs
字号:
using System;
using System.Windows.Forms;
using System.Drawing.Printing;
using System.Drawing;
using System.Data;
using System.Collections;
namespace Students1
{
public class DataGridPrinter
{
private DataGrid dataGrid;
private PrintDocument printDocument;
private PageSetupDialog pageSetupDialog;
private PrintPreviewDialog printPreviewDialog;
public DataGridPrinter()
{
printDocument = new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
}
public DataGridPrinter(DataGrid dataGrid)
{
this.dataGrid = dataGrid;
printDocument = new PrintDocument();
printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage);
}
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int rowCount = 0;
int colCount = 0;
int x = 0;
int y = 0;
int rowGap = 20;
int colGap = 5;
int leftMargin = 50;
Font font = new Font("Arial", 10);
Font headingFont = new Font("Arial", 11, FontStyle.Underline);
Font captionFont = new Font("Arial", 10, FontStyle.Bold);
Brush brush = new SolidBrush(Color.Black);
string cellValue = "";
string my = dataGrid.DataSource.GetType().ToString();
if (my == "System.Data.DataView")
{
rowCount = ((DataView)dataGrid.DataSource).Count;
}
else
{
rowCount = ((DataTable)dataGrid.DataSource).Rows.Count;
}
//rowCount = ((DataTable)dataGrid.DataSource).Rows.Count;
//rowCount = ((DataView)dataGrid.DataSource).Count;
colCount = dataGrid.TableStyles[0].GridColumnStyles.Count;
//print caption
if (dataGrid.CaptionVisible)
{
y += rowGap;
x = leftMargin;
e.Graphics.DrawString(dataGrid.CaptionText, captionFont, brush, x, y);
}
//print headings
y += rowGap;
x = leftMargin;
for (int j = 0; j < colCount; j++)
{
if (dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0)
{
cellValue = dataGrid.TableStyles[0].GridColumnStyles[j].HeaderText;
e.Graphics.DrawString(cellValue, headingFont, brush, x, y);
x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap;
}
}
for (int i = 0; i < rowCount; i++)
{
y +=rowGap;
x = leftMargin;
for (int j = 0; j < colCount; j++)
{
if (dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0)
{
cellValue = dataGrid[i, j].ToString();
e.Graphics.DrawString(cellValue, headingFont, brush, x, y);
x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap;
y = y + rowGap * (cellValue.Split(new char[] { '\r', '\n' }).Length - 1);
}
}
}
string s = cellValue;
string f3 = cellValue;
}
public PrintDocument GetPrintDocument()
{
return printDocument;
}
public void Print()
{
try
{
pageSetupDialog = new PageSetupDialog();
pageSetupDialog.Document = printDocument;
pageSetupDialog.Document.DefaultPageSettings.Landscape = true;
if (pageSetupDialog.ShowDialog() == DialogResult.OK)
{
printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
printPreviewDialog.Height = 600;
printPreviewDialog.Width = 800;
printPreviewDialog.ShowDialog();
}
}
catch (Exception e)
{
throw new Exception("Printer error." + e.Message);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -