Solved

printpage event apparently not firing

Posted on 2007-11-21
4
430 Views
Last Modified: 2013-11-07
I am trying to programatically print a code generated image.  The graphics is populated and I can save the .bmp to disk and it is correct.  However, when I send it to the printer, I get a blank page.  Apparently this is occurning because the printpage event is not firing.
I say that the event is not firing because when I place        
objBitmap.Save("c:\testing.bmp")
in the Sub pd_PrintPage it does not happen.
Private objBitmap As New Bitmap(765, 800)
 

    Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPrint.Click

        Try

            Dim objGraphics As Graphics

            Dim objFont As New Font("Arial", 12, FontStyle.Regular)

            objGraphics = Graphics.FromImage(objBitmap)

            objGraphics.DrawImage(objBitmap, 0, 0)

            objGraphics.DrawString(str1.ToString, objFont, Brushes.Black, 50, 50)

            objGraphics.DrawString(str2.ToString, objFont, Brushes.Black, 90, 100)

            objGraphics.DrawString(str3.ToString, objFont, Brushes.Black, 90, 240)

            Dim objPoint As Drawing.Point

            objPoint.X = "90"

            objPoint.Y = "200"

            objGraphics.DrawImageUnscaled(image1, objPoint)

            objGraphics.Save()

            Dim objDoc As New PrintDocument

            objDoc.PrinterSettings.PrinterName = prnName

            AddHandler objDoc.PrintPage, AddressOf Me.pd_PrintPage

            objDoc.Print()

            lblStatus.Text = "Printing Complete"

        Catch ex As Exception

            lblStatus.Text = ex.Message

        End Try
 

    End Sub
 

    Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) _

        Handles objDoc.PrintPage
 

        ' Draw a picture.

        ev.Graphics.DrawImage(objBitmap, _

        ev.Graphics.VisibleClipBounds)
 

        ' Indicate that this is the last page to print.

        ev.HasMorePages = False

    End Sub

Open in new window

0
Comment
Question by:zane_o
  • 2
  • 2
4 Comments
 
LVL 38

Accepted Solution

by:
PaulHews earned 250 total points
ID: 20330503
You need to declare your PrintDocument at the form/class level:
 Private objBitmap As New Bitmap(765, 800)

    Private WithEvents objDoc As New PrintDocument
 

    Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Try

            
 

            Dim objGraphics As Graphics

            Dim objFont As New Font("Arial", 12, FontStyle.Regular)

            objGraphics = Graphics.FromImage(objBitmap)

            objGraphics.DrawImage(objBitmap, 0, 0)

            objGraphics.DrawString(str1.ToString, objFont, Brushes.Black, 50, 50)

            objGraphics.DrawString(str2.ToString, objFont, Brushes.Black, 90, 100)

            objGraphics.DrawString(str3.ToString, objFont, Brushes.Black, 90, 240)

            Dim objPoint As Drawing.Point

            objPoint.X = 90

            objPoint.Y = 200

            objGraphics.DrawImageUnscaled(image1, objPoint)

            objGraphics.Save()

            objDoc.PrinterSettings.PrinterName = prnName

            objDoc.Print()

            lblStatus.Text = "Printing Complete"

        Catch ex As Exception

            lblStatus.Text = ex.Message

        End Try
 

    End Sub
 

    Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs) _

        Handles objDoc.PrintPage
 

        ' Draw a picture.

        ev.Graphics.DrawImage(objBitmap, _

        ev.Graphics.VisibleClipBounds)
 

        ' Indicate that this is the last page to print.

        ev.HasMorePages = False

    End Sub

Open in new window

0
 
LVL 38

Expert Comment

by:PaulHews
ID: 20330727
One typo.
Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Should be:

Private Sub butPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPrint.Click
0
 
LVL 6

Author Comment

by:zane_o
ID: 20331231
Sorry I didn't include this in the original post, but I have
    Private WithEvents objDoc As PrintDocument
in the code already.
0
 
LVL 6

Author Comment

by:zane_o
ID: 20331384
OK. That did the trick.  Thanks.
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This video discusses moving either the default database or any database to a new volume.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now