對話框預設單位為 ThousandthsOfAnInch (千分之一吋),確認後自動轉為 HundredthsOfAMillimeter (百分之一毫米),再開啟又縮小,導致數值遞減失真。
PageSetupDialog dlg = new PageSetupDialog();
dlg.Document = PrintDocument;
// 顯示前:轉為毫米單位供對話框顯示
dlg.PageSettings.Margins = PrinterUnitConvert.Convert(
dlg.PageSettings.Margins,
PrinterUnit.ThousandthsOfAnInch,
PrinterUnit.HundredthsOfAMillimeter);
if (dlg.ShowDialog() == DialogResult.OK)
{
// 使用者確認,dlg.PageSettings.Margins 已為正確值
}
else
{
// 取消:還原原單位避免污染 Document 設定
dlg.PageSettings.Margins = PrinterUnitConvert.Convert(
dlg.PageSettings.Margins,
PrinterUnit.HundredthsOfAMillimeter,
PrinterUnit.ThousandthsOfAnInch);
}


—