You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataGridView打印内容重叠问题及相关代码求助

解决DataGridView打印内容重叠问题

嘿,这问题太典型了!一眼就能看出症结——所有内容都被硬编码画在固定的Y坐标上了!每次循环打印行数据时,你都用300、310、320这些固定位置,结果每一行数据都叠在同一个区域,不重叠才怪呢。更糟的是表头居然也放在循环里,等于每打印一行就重复画一次表头,表头也会堆在一起!

问题根源拆解

你现在的代码逻辑是:循环每一行时,都在同一个Y位置画表头、分隔线、数据行,新的内容直接覆盖旧的,自然就重叠了。

修复方案

我们需要一个变量来跟踪当前的打印位置,每打印完一行就把这个位置往下挪,确保下一行内容落在新的区域。具体步骤:

  1. 定义currentY变量,初始化为你想要的起始打印位置
  2. 把表头和分隔线的代码移到循环外面,只执行一次
  3. 循环打印数据时,用currentY作为Y坐标,打印完一行后增加currentY的值(根据行高调整)

修改后的完整代码

Dim rowCount As Integer = DataGridView6.Rows.Count
' 初始化起始Y坐标,可根据你的布局需求调整
Dim currentY As Integer = 300

' 先打印表头,只需要画一次!
e.Graphics.DrawString("PARTICULARS", ReportBodyFont, Brushes.Black, 70, currentY)
e.Graphics.DrawString("QTY", ReportBodyFont, Brushes.Black, 400, currentY)
e.Graphics.DrawString("AMOUNT", ReportBodyFont, Brushes.Black, 600, currentY)

' 下移到分隔线位置
currentY += 10
e.Graphics.DrawString("----------------------------------------------------------", ReportFont, Brushes.Black, 50, currentY)

' 下移到第一行数据的起始位置
currentY += 10

For i = 0 To rowCount - 1
    ' 处理空单元格,避免空引用异常
    Dim particularsText As String = If(DataGridView6.Rows(i).Cells(1).Value IsNot Nothing, DataGridView6.Rows(i).Cells(1).Value.ToString(), "")
    Dim qtyText As String = If(DataGridView6.Rows(i).Cells(3).Value IsNot Nothing, DataGridView6.Rows(i).Cells(3).Value.ToString(), "")
    Dim amountText As String = If(DataGridView6.Rows(i).Cells(2).Value IsNot Nothing, DataGridView6.Rows(i).Cells(2).Value.ToString(), "")

    e.Graphics.DrawString(particularsText, ReportBodyFont, Brushes.Black, 70, currentY)
    e.Graphics.DrawString(qtyText, ReportBodyFont, Brushes.Blue, 400, currentY)
    e.Graphics.DrawString(amountText, ReportBodyFont, Brushes.Black, 600, currentY)

    ' 每次打印完一行,下移行高(用字体高度动态计算,适配不同字号)
    currentY += ReportBodyFont.Height + 5
Next

额外优化建议

  • 用ReportBodyFont.Height动态计算行高,比硬编码数字更适配不同的字体大小
  • 保留空单元格的判断逻辑,避免运行时抛出NullReferenceException
  • 如果数据量较大,记得补充分页逻辑,不然超出一页的内容会被截断

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:37:56