【问题标题】:Why Does printdocument print the same page when the text is changed in for loop? [duplicate]为什么在 for 循环中更改文本时 printdocument 会打印相同的页面? [复制]
【发布时间】:2021-07-13 15:08:12
【问题描述】:

我试图从 datagridview 打印每行具有 1 作为单元格值之一,但现在它们都是 1(我这么说是因为我的循环中有一个 if)。我要取出大部分打印代码,因为它会打印很多字符串,这是我的 printdocument.printpage。

For i As Integer = 0 To dgv.Rows.Count - 1
        If dgv.Rows(i).Cells(18).Value = 1 Then
            S_Cegnev = dgv.Rows(i).Cells(3).Value
            S_FullCim = dgv.Rows(i).Cells(4).Value & " " & dgv.Rows(i).Cells(5).Value & ", " & dgv.Rows(i).Cells(6).Value
            S_Adoszam = dgv.Rows(i).Cells(10).Value
            S_MaganJogi = dgv.Rows(i).Cells(13).Value
            S_DatumElsodleges = dgv.Rows(i).Cells(16).Value
            S_Osszeg = dgv.Rows(i).Cells(14).Value

然后它使用 for 循环中设置的变量绘制字符串,并将 1 的数量与打印页面的数量进行比较,并设置 e.hasmorepages。它确实打印了适量的页面,但它们都包含第一行的数据......而且最后一页似乎有两行数据打印在彼此的顶部。谢谢!

【问题讨论】:

    标签: vb.net winforms


    【解决方案1】:

    您从 0 开始循环计数器,以便在每个页面上发生什么。如果您希望后续页面打印不同的行,那么您需要从不同的索引开始。您需要记住您在一页上完成的索引,以便您可以从下一页的下一个索引开始。这意味着使用在该事件处理程序的调用之间存在的变量,即成员变量。您可以在打印运行之前将其设置为 0,然后在每页结束时将其设置为 0。

    【讨论】:

    • 天啊,当然,我什至记得我上次设置过。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2019-05-28
    相关资源
    最近更新 更多