关于如何打印ListView的解决方法

本文围绕如何打印ListView展开,介绍了通用的打印核心程序原理,即实现二维数据打印并绘制线组成网格。提供了将ListView转换为二维数组的代码,还给出了C#和VB.Net打印ListView的示例,同时提及相关内容及源码下载信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于如何打印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#打印分页原理并实现完整的文档及分页打印(查看文档

下载:PrinterPageSetting

下载:MIS金质打印通

相关源码下载信息请访问:
http://blog.youkuaiyun.com/flygoldfish

声明:本文版权为周方勇所有,欢迎转载,请保留完整的内容及出处。
flygoldfish@163.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值