我想使用PageSetupDialog
类来允许用户修改打印布局。问题是"记住"设置。按下某个按钮时,PageSetupDialog应弹出存储的设置。点击OK
时,应再次存储设置以供进一步使用。
我设法使用PageSettings
属性的序列化来扩展设置。但是,每次打开对话框并再次关闭时,边距都会减半。
using (var dialog = new PageSetupDialog())
{
dialog.PageSettings = LoadPageSettings();
if (dialog.ShowDialog() == DialogResult.OK)
{
SavePageSettings(dialog.PageSettings);
}
}
SavePageSettings
将设置序列化为字符串并将它们放入注册表中。 PrintFileName设置为" SKIP"或者序列化会崩溃。
settings.PrinterSettings.PrintFileName = "SKIP";
Registry.SetValue(string.Format(@"HKEY_CURRENT_USER\Software\{0}\{1}",
Company, Software, "PrintSettings", SerialHelper.Serialize(settings));
LoadPagesettings
方法使用Registry.GetValue
和匹配的Deserialize-Method。序列化程序在其他几个场合用于其他类,并且工作正常(简单的XmlSerializer)。
使用调试我可以看到加载/保存工作,但窗口显示错误的数据。当我第一次打开PageSetupDialog时,数据如下:
(请原谅使用非英文UI窗口)
如果重要的话,我使用的是.NET 4.0