none
VB.NET PRINTDOCUMENT在頁與頁間的印表機控制 RRS feed

  • 問題

  •         If DataGridView1.ColumnCount > 0 Then
                TableFont = New Font("Times New Roman", 12)
                X(0) = PrintDocument1.DefaultPageSettings.Margins.Left + 2
                X(1) = X(0) + 159
                X(2) = X(1) + 159
                X(3) = X(2) + 159
                itm = 0
                intPrintLocal = 1
                Call GetPrintString() '利用DATAGRIDVIEW內資料製作待列印資料
                AddHandler PrintDocument1.PrintPage, AddressOf PrintDocument1_PrintPage 'PRINTPAGE 區用靜態變數製作列印頁與分頁
                PrintDocument1.Print()
            Else
                MsgBox("缺乏列印資料,無法列印", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "操作失誤")
            End If

    我想讓每頁列印前暫停列印60秒,同時顯示form上,所以在PRINTPAGE上進行修正如下

         Private Sub PrintDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim i As Integer
            Dim count As Integer = 0
            If intTestPrn = 0 Then
                For i = 60 To 1 Step -1
                    Label17.Text = "休息" & i & "秒,請稍候..."
                    Me.Refresh()
                    System.Threading.Thread.Sleep(1000)
                Next i
                Label17.Text = "開始列印"
                While intPrintLocal <= intPrintCount
                    If strPrn(intPrintLocal, 3) = "Change" And Not (strPrn(intPrintLocal + 1, 0)) Then
                        ' For i = 120 To 1 Step -1
                        ' Label17.Text = "中場休息" & i & "秒,請稍候..."
                        ' System.Threading.Thread.Sleep(1000)
                        ' Next i
                        intPrintLocal += 1
                        e.HasMorePages = True
                        count = 0
                        Exit While
                    Else...

    但是列印作業時程式會直接顯示暫停60...1再暫停60...1...連續4次,再一次印4頁;請問如何改變?是否要使用onprintpage?如何使用?

    2018年7月9日 上午 07:37

所有回覆

  • 因為送到印表機是以文件為單位。

    印表機收完文件後才會印出。

    照你的邏輯,你需要一頁一個文件送出。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年7月9日 下午 02:46
  • 謝謝老哥回復,因為這個程序是用來套印標籤,所以會做成多頁列印方式,供操作者可以預覽列印,如果一頁頁送出,數量龐大影響操作時間浪費人工,我已經刪除暫停程序部分,改讓操作者用分批列印方式執行來解決。

    但是還有一個缺點需要麻煩指教,因點陣式印表機有針頭過熱問題,雖會自動減慢列印速度,但大量列印仍容易損壞,請問有沒有辦法於程式中取得印表機狀況,並予以暫停列印或其他處理?

    承蒙指教,不勝感激

    2018年7月12日 上午 08:06
  • Windows 沒有偵測這種狀態。

    你得問問印表機廠商客服部門開發手冊,大廠的印表機廠商可從官方網站下載相關開發手冊,但有沒有到這麼細就要看印表機廠商有沒有實作。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年7月12日 下午 03:34