在 windows Forms的dataGrid的内容打印出来.我从网上下的dataGrid的控件,运行时总会出现未安装打印机的提示.请哪位高手能否给出不需要安装打印机就能进行打印预览(就象在word 下的打印预览)的dataGrid控件.
解决方案 »
- 再次抱着试一试的心态来问一个问题、C# 关于加载窗体、、
- 紧急求助,button和tableLayoutPanel问题
- Socket向控件传递信息,使用BackgroundWorker还是Invoke
- 新手请教:抽象类|构造函数,谢谢!
- 帮我刚入门.net 我想问一下我的数据为什么不能更新。
- 请介绍一本C#网络编程的好书
- 在c#中用代码操作SQlite如何实现自增列值的改变
- 我安装Visual C# 2005 速成版的测试版 2后运行时提示,试用期已过
- 简单问题,一行代码太长,我想分成两行写,在c#中应如何做?
- 求一文本框中嵌入按钮的控件写法?
- 使用数据绑定RadioButton出現的奇怪問題,請教高手(急!)
- datagrid更新问题
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;
using System.Windows.Forms;namespace WindowsApplication1
{
/**//// <summary>
/// Summary description for DatagridPrint.
/// </summary>
public class DatagridPrint
{
private DataGrid dataGrid;
private PrintDocument printDocument;
private PageSetupDialog pageSetupDialog;
private PrintPreviewDialog printPreviewDialog; public DatagridPrint(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 = ""; if(dataGrid.DataSource.GetType().ToString() == "System.Data.DataTable")
{
rowCount = ((DataTable)dataGrid.DataSource).Rows.Count;
}
else if(dataGrid.DataSource.GetType().ToString() == "System.Collections.ArrayList")
{
rowCount = ((ArrayList)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;
}
} //print all rows
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, font, brush, x, y);
x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap;
y = y + rowGap * (cellValue.Split(new char[] {' ', ' '}).Length - 1);
}
}
}
string s = cellValue;
string f3 = cellValue;
} 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);
} }
}
}