首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的代码在打印水晶报表时速度很慢,也不能在所需的打印机上打印?

为什么我的代码在打印水晶报表时速度很慢,也不能在所需的打印机上打印?
EN

Stack Overflow用户
提问于 2021-03-24 22:53:52
回答 1查看 75关注 0票数 1

我正在编程一个零售系统,应该打印在4种类型的打印机,收据,A4,A5和标签。我的问题是,我需要在不更改默认打印机的情况下打印收据,但是如果打印机设置为默认打印机,我可以正常打印。

让我疑惑的是,我已经设置了所需打印机的名称,但它打印到默认打印机,而且在任何情况下都需要6-10秒,这在这样的软件中是不能接受的,以下是我的代码:

代码语言:javascript
运行
复制
Private Sub PrintFromDS()
    Dim rptDoc As New ReportDocument
    rptDoc = New CRrcpt
    Dim i As Integer
    Dim doctoprint As New System.Drawing.Printing.PrintDocument()
    doctoprint.PrinterSettings.PrinterName = RcptPrinter
    Dim rawKind As Integer
    For i = 0 To doctoprint.PrinterSettings.PaperSizes.Count - 1
        If doctoprint.PrinterSettings.PaperSizes(i).PaperName = "72mm x Receipt" Then
            rawKind = CInt(doctoprint.PrinterSettings.PaperSizes(i).GetType().GetField("kind", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic).GetValue(doctoprint.PrinterSettings.PaperSizes(i)))
            Exit For
        End If
    Next
    rptDoc.SetDataSource(ds)
    rptDoc.PrintOptions.PaperSize = CType(rawKind, CrystalDecisions.Shared.PaperSize)
    rptDoc.PrintToPrinter(1, False, 0, 0)
    rptDoc.Refresh()
    End If
End Sub

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-25 04:11:13

我没有看到你的代码有任何问题。

For循环是唯一可以减慢代码速度的地方。

但我的猜测是,打印机确实需要很长时间才能唤醒。它还取决于打印机驱动程序。有些打印机对不同的框架有不同的响应。

我的经验是,如果你放置一个加载元素,比如动画,或者继续进度条,用户就不会再感觉到6秒。

如果您将Messagebox("test")放在代码的末尾。消息框会立即出现吗?如果是这样,这意味着您的代码运行良好,但打印机不能。这可能意味着数据源本身没有优化,或者您的打印机电量不足。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66783627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档