473,386 Members | 1,815 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,386 software developers and data experts.

BUG: Printing

Hi,

I am working on the PrintDocument, PrintDialog, PageSetupDialog and
PrintPreviewControl components of Visual Studio .NET 2003. My developement
machine is running Windows XP.

There are some problems I encountered while using them. Please note that,
the Regional and Language setting on my machine is using "Metric"
measurement system (where the default is "US"). In this case, the
measurement unit is "milimeters" and not "inches".
PROBLEM #1
``````````````
The first problem is with PageSetupDialog. The following code,

Dim pagesettings As System.Drawing.Printing.PageSettings
Dim pagesetupdialog As System.Windows.Forms.PageSetupDialog

pagesettings = New System.Drawing.Printing.PageSettings
With pagesettings.Margins
.Left = 100
.Right = 100
.Top = 100
.Bottom = 100
End With

pagesetupdialog = New System.Windows.Forms.PageSetupDialog
With pagesetupdialog
.PageSettings = pagesettings
.ShowDialog()
End With

' Values printed out are not the same as entered
With pagesettings.Margins
Console.WriteLine(.Left)
Console.WriteLine(.Right)
Console.WriteLine(.Top)
Console.WriteLine(.Bottom)
End With

will reproduce the problem I'm facing.

Before calling the ShowDialog() method of the PageSetupDialog component, I
have already set the Margins to 100. Although my OS's measurement system is
set to "Metric", Visual Studio .NET still uses inches (0.01 in) for it's
measurement unit. In my case, the Margins are set to 1 inch.

On calling the ShowDialog() method, what you see is the margins are all set
to 10 (and the unit is milimeters). On clicking the OK button, the
PageSetupDialog component will convert the value entered in it's dialog to
inches (0.01 in). As the result, the margins after the ShowDialog() is
called are changed to 39 (100/2.54=39.xxxxxx).

This surely is a BUG (or am I missing something here).

I have a solution for this problem and the code is as below.

Dim pagesettings As System.Drawing.Printing.PageSettings
Dim pagesetupdialog As System.Windows.Forms.PageSetupDialog

pagesettings = New System.Drawing.Printing.PageSettings
With pagesettings.Margins
.Left = 100
.Right = 100
.Top = 100
.Bottom = 100
End With

pagesetupdialog = New System.Windows.Forms.PageSetupDialog
With pagesetupdialog
.PageSettings = pagesettings

' Keep the original setting
Dim marginSaved As System.Drawing.Printing.Margins
marginSaved = pagesettings.Margins

' Convert to milimeters
pagesettings.Margins =
System.Drawing.Printing.PrinterUnitConvert.Convert (pagesettings.Margins,
System.Drawing.Printing.PrinterUnit.Display,
System.Drawing.Printing.PrinterUnit.TenthsOfAMilli meter)

' Show the page setup dialog
If .ShowDialog() = DialogResult.Cancel Then
' If user clicked Cancel, restore the saved margin
pagesettings.Margins = marginSaved
End If
End With

With pagesettings.Margins
Console.WriteLine(.Left)
Console.WriteLine(.Right)
Console.WriteLine(.Top)
Console.WriteLine(.Bottom)
End With

But there is a problem with it. The conversion between milimeters and inches
causes the measurement to be inaccurate.
PROBLEM #2
``````````
The OriginAtMargins property of the PrintDocument component does not work
properly when the PrintDocument is added into the PrintPreviewControl.
Setting the value to True does not effect the preview shown by
PrintPreviewControl but the printed result is correct.
PROBLEM #3
``````````
When handling the PrintPage event of the PrintDocument, if the
OriginAtMargins of the PrintDocument is set to True and I set,

e.Graphics.PageUnit = GraphicsUnit.Millimeter

then the top margin is measured as milimeters while the left margin is
measured as inches.
The problem discuss above might not be bugs but I have checked the MSDN
library but it does not seem to help much. Any help is really appreciated.

Thanks in advance.
Jul 21 '05 #1
0 2243

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Programatix | last post by:
Hi, I am working on the PrintDocument, PrintDialog, PageSetupDialog and PrintPreviewControl components of Visual Studio .NET 2003. My developement machine is running Windows XP. There are...
34
by: Marcel van Kervinck | last post by:
Dear all, I would like to confirm my suspicion of a compiler bug in gcc4 for MacOSX. The code example below expects that the initializer of 'v' sets all elements in v.u.bytes to zero, as...
3
by: Jochen Kalmbach | last post by:
Hello, if an PrinterSettings-Instance is not set-up correctly (for example just by using the default-constructor), then the "ToString()"_method will throw an exception! Unhandled...
2
by: Martin | last post by:
I have encountered a bug in print preview: In my program, data for printing is taken from arrays. When print preview is invoked or page is printed directly, it is ok, but when user prints from...
4
by: Steph. | last post by:
Hi, Is there a BUG in the printdialog ? When I create a PrintDialog ans set the "DefaultPageSettings.Landscape" property to "false" and then display the dialog, select "Landscape" and click OK,...
0
by: Programatix | last post by:
Hi, I am working on the PrintDocument, PrintDialog, PageSetupDialog and PrintPreviewControl components of Visual Studio .NET 2003. My developement machine is running Windows XP. There are...
9
by: Summercoolness | last post by:
it seems that the behavior of "print" is that it will round off properly for any floating point imperfection, such as shown in the first two samples. The third sample seems to be a bug? It...
4
by: Number 11950 - GPEMC! Replace number with 11950 | last post by:
When www.geoceanis.com is sent to the print preview or alternatively the printer, the second page is displayed or printed by IE, but lost to Gecko (Netscape, Firefox, Moxilla, etc...). NOTE: Both...
3
by: William Chang | last post by:
Is the different behavior between __repr__ and __str__ intentional when it comes to printing lists? Basically I want to print out a list with elements of my own class, but when I overwrite __str__,...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.