在C#中存储PageSetupDialog中的PageSetup

时间:2016-04-13 09:49:27

标签: c# .net

我想使用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时,数据如下:

First run, saving changes when clicking ok

单击“确定”并再次打开对话框后,它看起来像这样: Second run, loading changes from registry

(请原谅使用非英文UI窗口)

如果重要的话,我使用的是.NET 4.0

0 个答案:

没有答案