vb.net listview 打印

vb.net listview 打印

在VB.NET中,要打印ListView控件的内容,您可以使用PrintDocument对象。以下是一个简单的示例,展示了如何实现ListView的打印功能:

  1. 首先,您需要在窗体上添加一个ListView控件和一个PrintDocument组件。

  2. 然后,您可以使用以下代码实现打印功能:

    Imports System.Drawing.Printing
     
    Public Class Form1
        Private WithEvents printDoc As New PrintDocument
        Private totalPages As Integer = 1
        Private currentPage As Integer = 1
        Private font As New Font("Arial", 10)
        Private linesPerPage As Integer = 0
        Private lineIndex As Integer = 0
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ' 填充ListView数据
            ListView1.Items.Add(New ListViewItem(New String() {"Item1", "Description1"}))
            ListView1.Items.Add(New ListViewItem(New String() {"Item2", "Description2"}))
            ' ... 添加更多项
     
            ' 设置ListView样式
            ListView1.View = View.Details
            ListView1.Columns.Add("Column1", 100)
            ListView1.C
Private Sub Image5_Click() '打印报表 Dim i As Integer Dim pageleft As Integer Dim pageheader As Integer Dim pagefooter As Integer Dim pageright As Integer Dim startx As Integer Dim starty As Integer Dim startline As Integer Dim endline As Integer Dim usewidth As Integer Dim useheight As Integer pageheader = 25 pagefooter = 25 pageleft = 20 pageright = 20 '定义纸张类型A4 Printer.FontSize = 20 Printer.PaperSize = 9 Printer.ScaleMode = 6 Printer.FontBold = False Printer.ScaleLeft = -20 Printer.ScaleTop = -25 Printer.ScaleWidth = 210 Printer.ScaleHeight = 297 usewidth = Printer.ScaleWidth - 40 useheight = Printer.ScaleHeight - 50 Printer.CurrentX = 0 Printer.CurrentY = 0 Printer.DrawWidth = 2 '打印主标题 Printer.FontSize = 20 Printer.CurrentX = (usewidth - Printer.TextWidth(Me.Text1.Text & "经济情况表")) / 2 Printer.CurrentY = Printer.ScaleTop Printer.Print Me.Text1.Text & "经济情况表" '打印空白行 Printer.FontSize = 8 Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print "" '打印副标题 Printer.FontSize = 15 Printer.CurrentX = (usewidth - Printer.TextWidth(commonth & "月份经济情况报表")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print commonth & "月份经济情况报表" '打印空白行 Printer.FontSize = 8 Printer.CurrentX = (usewidth - Printer.TextWidth("")) / 2 Printer.CurrentY = Printer.CurrentY + 1 Printer.Print "" '打印表的内容 '首先打印第一条横线 '打印最上边的第一条横线 Printer.CurrentX = pageleft + Printer.ScaleLeft startline = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.FontSize = 12 Printer.CurrentY = Printer.CurrentY + 1 starty = Printer.CurrentY Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth("")) / 2 Printer.Print "" Printer.FontSize = 12 Printer.CurrentX = usewidth / 3 + ((usewidth / 3 - Printer.TextWidth("今年经济情况")) / 2) Printer.CurrentY = starty Printer.Print "今年经济情况(万元)" Printer.FontSize = 12 Printer.CurrentX = (usewidth / 3) * 2 + ((usewidth / 3 - Printer.TextWidth("去年经济情况")) / 2) Printer.CurrentY = starty Printer.Print "去年经济情况(万元)" Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 For i = 0 To 10 '判断是否该页已打满 Me.MSFlexGrid1.Row = i If Printer.CurrentY >= useheight Then '打印横线 Printer.CurrentX = Printer.ScaleLeft + pageleft Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 '打印四条竖线 endline = Printer.CurrentY Printer.Line (0, startline)-(0, endline) Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline) Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline) Printer.Line (usewidth, startline)-(usewidth, endline) '打印页号 Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft Printer.CurrentY = useheight + 3 Printer.Print Printer.Page Printer.NewPage 'NewPage告诉打印机,程序对当前输出页的发送已经结束。Printer对象应开始新的一页。 Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = pageheader + Printer.ScaleTop startline = Printer.CurrentY Else '打印一行数据 Me.MSFlexGrid1.Col = 0 Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 8 starty = Printer.CurrentY Printer.Print Me.MSFlexGrid1.Text Me.MSFlexGrid1.Col = 1 Printer.CurrentX = (Printer.ScaleWidth - 40) / 3 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2 Printer.CurrentY = starty Printer.Print Me.MSFlexGrid1.Text Me.MSFlexGrid1.Col = 2 Printer.CurrentX = ((Printer.ScaleWidth - 40) / 3) * 2 + ((Printer.ScaleWidth - 40) / 3 - Printer.TextWidth(Me.MSFlexGrid1.Text)) / 2 Printer.CurrentY = starty Printer.Print Me.MSFlexGrid1.Text Printer.CurrentX = pageleft + Printer.ScaleLeft Printer.CurrentY = Printer.CurrentY + 1 Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) Printer.CurrentY = Printer.CurrentY + 1 End If Next i '打印最后一条横线 Printer.CurrentX = Printer.ScaleLeft + pageleft Printer.Line -((Printer.ScaleLeft + Printer.ScaleWidth - pageleft), Printer.CurrentY) endline = Printer.CurrentY '打印四条竖线 Printer.Line (0, startline)-(0, endline) Printer.Line (usewidth / 3, startline)-(usewidth / 3, endline) Printer.Line ((usewidth / 3) * 2, startline)-((usewidth / 3) * 2, endline) Printer.Line (usewidth, startline)-(usewidth, endline) '打印页号 Printer.CurrentX = (Printer.ScaleWidth - Printer.TextWidth(Printer.Page)) / 3 - pageleft Printer.CurrentY = useheight + 3 'Printer.Print Printer.Page Printer.Print " 哈尔滨高新技术开发区" Printer.EndDoc 'EndDoc告诉VISUAL BASIC,程序创建文档结束。VISUAL BASIC应将它发送到物理打印机上打印。 If Err.Number = 0 Then MsgBox "you are successful!", , "" End If End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值