【发布时间】:2011-05-16 05:45:37
【问题描述】:
您似乎可以保留设置文件 PrinterSettings 和 PageSettings,它们是可序列化的等。太好了!一切都很顺利,直到我尝试坚持我的 PageSettings 和页边距。每次我更改边距时,保存设置,然后将它们重新加载回 PageSetupDialog.PageSettings - 它们已被修改。有谁知道为什么会这样?是驱动程序还是 Windows 正在做的事情?它很奇怪,见下文:
这里显示对话框:
PageSetupDialog psd = new PageSetupDialog();
psd.PageSettings = MySettings.Default.pageSettings;
if (psd.ShowDialog() == DialogResult.OK)
我手动将值更改为 5。
然后我保存更改:
MySettings.Default.pageSettings = psd.PageSettings;
当我重新加载对话框并从设置文件加载设置时,值已更改为 2!?
更新:
所以只是尝试扩展问题 - 如果我们第一次显示 PageSetupDialog,默认设置值为 10,所有边距。如果我们在调试期间检查这些值,我们会看到它们是这样表示的:
所以它们都是 100,很奇怪,但我希望它们是 10,即像对话框所说的 10 毫米,所以我不知道 100 是什么测量单位,但无论如何让我们假设它与 10 英寸相关对话框。
然后我们在对话框中将它们全部编辑为 5 并按 OK - 这样我们就可以通过以下代码:
if (psd.ShowDialog() == DialogResult.OK)
所以我们希望在检查 pageSettingDialog 对象时看到一些边距值全部为 5(或 50,这似乎是 10 与 100 混淆的情况,见上文)。那么我们来看看对象:
你瞧,这不是我们所期待的,出于某种奇怪的原因,它是 20。这就是我被卡住的地方,我只是无法弄清楚这里看到的背后发生了什么。为什么它从 50 变为 20?,为什么它不会保持我设置的值? 希望能解释得更好一点。
【问题讨论】:
-
只有当您从 Visual Studio 运行(调试)时,甚至当您从 Windows 资源管理器运行 exe 时才会出现这种情况吗?
-
在调试和 exe 中都会发生。
-
查看我对原始帖子的更改。