private void marginChange_Click(object sender, EventArgs e)
{
controller.HandleExceptions(
delegate {
UpdateSettings();
Margins originalMargins = settings.PageSettings.Margins;
if (RegionInfo.CurrentRegion.IsMetric) // work around bug
settings.PageSettings.Margins = PrinterUnitConvert.Convert(settings.PageSettings.Margins, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);
pageSetupDialog.PageSettings = settings.PageSettings;
pageSetupDialog.PrinterSettings = settings.PageSettings.PrinterSettings;
DialogResult result = pageSetupDialog.ShowDialog(this);
if (result == DialogResult.OK) {
settings.PageSettings = pageSetupDialog.PageSettings;
UpdateDialog();
}
else {
settings.PageSettings.Margins = originalMargins;
}
}
);
}