Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

Componente PageSetupDialog

 

Il componente PageSetupDialog ha un baco (noto) per cui se (nel computer) le impostazioni di misura sono quelle metriche i valori dei margini impostati vengono convertiti in pollici, e quindi diminuiti.

In pratica, se si esegue la ShowDialog del componente l'utente può imposta il valore 10 per il margine sinistro, preme ok e voi dalla vostra applicazione leggete che ha impostato 3,9!


Il problema è descritto nell'articolo: http://support.microsoft.com/?id=814355

Per ovviare a questo inconveniente possiamo modificare la chiamata alla ShowDialog del componente nel modo seguente:

 

    1 Imports System.Drawing.Printing

    2 

    3 Public Class Form1

    4 

    5   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _

    6   Handles Button1.Click

    7     ' Inizializza la proprietà PageSettings

    8     Me.PageSetupDialog1.PageSettings = New PageSettings

    9     ' Apre la finestra delle impostazioni della pagina

   10     Me.PageSetupDialog1.ShowDialog(Me)

   11     '============================================================

   12     ' Commentare il seguente IF per vedere la differenza

   13     '============================================================

   14     ' Esegue la coversione se il sistema corrente è metrico

   15     If System.Globalization.RegionInfo.CurrentRegion.IsMetric Then

   16       Me.PageSetupDialog1.PageSettings.Margins = _

   17       PrinterUnitConvert.Convert(Me.PageSetupDialog1.PageSettings.Margins, _

   18       PrinterUnit.ThousandthsOfAnInch, PrinterUnit.HundredthsOfAMillimeter)

   19     End If

   20     ' Riapre la finestra delle impostazioni

   21     Me.PageSetupDialog1.ShowDialog(Me)

   22   End Sub

   23 

   24 End Class

 

Print | posted on venerdì 22 febbraio 2008 01:28 | Filed Under [ Tips VS2005 .Net ]

Powered by:
Powered By Subtext Powered By ASP.NET