急求关于控件打印解决方法 RT:比如打印ListView控件的内容,打印DataGird控件的内容,以及tabPage控件容器内的所有内容(包括底图和样式),请高手指点帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DataGrid 打印类 using System;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); } } } } 打印ListView控件的内容,打印DataGird控件的内容有现成开源的www.webmis.com.cn只要是二维的,全部可以打印打印ListView,只需将ListView转换为二维数组。 public string[,] ToStringArray(ListView listView,bool includeColumnText) { ListView lvw = listView; int rowsCount = lvw.Items.Count; int colsCount = lvw.Columns.Count; //包括列标题 if (includeColumnText) { rowsCount++; } string[,] arrReturn = null; arrReturn = new string[rowsCount,colsCount]; int i = 0; if (includeColumnText) { //写标题 for(i = 0 ; i < colsCount; i++) { arrReturn[0,i] = lvw.Columns[i].Text; } i = 1; } //写数据行Items int rowIndex = 0; for(; i < rowsCount; i++,rowIndex++) { for (int j = 0; j < colsCount; j++) { arrReturn[i,j] = lvw.Items[rowIndex].SubItems[j].Text; } } return arrReturn; } 大家有碰过我这中服务端情况的吗? c# TCP编程 传输消息问题 不用GridView怎么实现全选修改删除呢? 如何寻找别的应用程序窗口里的控件? 哥哥们,马上给分,有没有办法点中DataGridView就是进入了cell? ADO.net连oracle数据库程序的安装问题 医保接口的问题 将字符串转为字节数组,并实现带溢出的字节求和校验 有关传递dataset类型的参数问题~~谢谢 一个SQL的ASP.net问题 关于打印的行和列同时分页的问题~~~~ 如何控制我新建的控件?
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);
} }
}
}
www.webmis.com.cn只要是二维的,全部可以打印打印ListView,只需将ListView转换为二维数组。
public string[,] ToStringArray(ListView listView,bool includeColumnText)
{
ListView lvw = listView;
int rowsCount = lvw.Items.Count;
int colsCount = lvw.Columns.Count; //包括列标题
if (includeColumnText)
{
rowsCount++;
} string[,] arrReturn = null;
arrReturn = new string[rowsCount,colsCount]; int i = 0; if (includeColumnText)
{
//写标题
for(i = 0 ; i < colsCount; i++)
{
arrReturn[0,i] = lvw.Columns[i].Text;
} i = 1;
} //写数据行Items
int rowIndex = 0;
for(; i < rowsCount; i++,rowIndex++)
{
for (int j = 0; j < colsCount; j++)
{
arrReturn[i,j] = lvw.Items[rowIndex].SubItems[j].Text;
}
} return arrReturn;
}