关于如何打印ListView的解决方法
作者:长江支流
关键字:.NET、打印、ListView打印、二维数据
日 期:2005-12-12
经常很多使用MIS金质打印通的网友来信问如何打印ListView,在网上也有很多朋友想打印ListView。大家可以到我的网上下载MIS金质打印通源码打印ListView。
我在开发打印核心程序时不是针对特定的网格,而是为了通用。在MIS金质打印通原理及实现 Step by step 原理篇已说明了,大家可以看一看,也可以自己实现自己的打印。
很多打印程序,都是针对特定的网格控件如DataGrid打印,但是,为了通用,我们想想怎么办呢?
实现的它们的核心,也就是实现二维数据的打印,加上绘制线,就组成了网格,多个网格就组成了报表、单据等。那么打印文本呢?哈哈,还是网格,只是一行一列,不用绘制网格线。也许有人要问,我的报表或单据合同之类的太复杂了,能实现吗?回答是肯定的,我们可以通过组合多个网格,合并网格的单元格进行实现。
ListView无外乎也是一个二维形式的,下面提供一个把ListView转换为二维数组。
ListView转换为二维数组
/// <summary>
/// 将ListView的数据导出到二维数组。
/// </summary>
/// <param name="listView">二维数据视图</param>
/// <param name="includeColumnText">是否要把列标题文本也导到数组中。</param>
/// <remarks>
/// <作者>长江支流</作者>
/// <日期>2005-08-21</日期>
/// <修改></修改>
/// </remarks>
/// <returns>二维数组。</returns>
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;
}
打印ListView:
private void btnPrintEasy_Click(object sender, System.EventArgs e)
{
MisGoldPrinter webmis = new MisGoldPrinter(); //打印组件
webmis.Title = "MIS金质打印通/nWWW.WebMIS.COM.CN"; //网格标题
webmis.DataSource = ToStringArray(listView,true); //任意二维的数据通通打印
webmis.Preview(); //打印预览
}
VB.Net:
Private Sub btnPrintEasy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrintEasy.Click
Dim webmis As MisGoldPrinter '打印组件
webmis = New MisGoldPrinter
webmis.Title = "MIS金质打印通"+vbCrLf+"WWW.WebMIS.COM.CN" '网格标题
webmis.DataSource = ToStringArray(listView,true) '任意二维的数据通通打印
webmis.Preview() '打印预览
End Sub
相关内容:
1>MIS金质打印通原理及实现 Step by step 原理篇
2>封装了打印页面设置、打印机设置、打印预览对话框(查看文档)
3>了解VB.NET与C#打印分页原理并实现完整的文档及分页打印(查看文档)
下载:MIS金质打印通
相关源码下载信息请访问:
http://blog.youkuaiyun.com/flygoldfish
声明:本文版权为周方勇所有,欢迎转载,请保留完整的内容及出处。
flygoldfish@163.com