【发布时间】:2012-03-31 01:43:50
【问题描述】:
在向用户显示对话框后,我正在尝试修改从 System.Windows.Forms.PrintDialog 获得的 System.Drawing.Printing.PrinterSettings 对象。虽然我可以更改 PrinterSettings 对象的属性值,但在打印文档时实际上并没有考虑我在显示对话框后所做的任何更改。
这是我的意思的一个例子:
//Show the printdialog and retreive the printersettings
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() != DialogResult.OK)
return;
var printerSettings = printDialog.PrinterSettings;
//Now modify the printersettings object
printerSettings.ToPage = 8;
现在使用printerSettings 对象进行打印。我为此使用了 3rd Party dll Aspose.Words,因为我需要打印 Word,但这似乎不是问题。似乎在显示对话框后,所有设置都已提交给打印机,而更改 PrinterSettings 没有任何效果。关于如何让它发挥作用的任何想法?
编辑:我有一些解决方法。我在这里想要得到这些特定问题的答案:是否可以在显示对话框后更改 PrinterSettings 对象,以及在打印中是否考虑了这些更改。如果有人只知道一种工作方式(您可以决定要使用什么 API 进行打印,只要使用 PrinterSettings 对象就没有关系),我将非常感激。
【问题讨论】:
-
打开对话框之前没有更改设置的任何原因?
-
是的,在我的应用程序中,我有“合并文档”,其中包含许多不同的文档。在打印对话框中,它们应该显示为一个文档,但对于打印,我需要单独处理它们。所以更准确地说:一些 PrinterSettings 应该适用于所有文档,其他我需要为每个文档单独设置。我可以在没有用户交互的情况下计算单个属性/设置,但对于打印,我需要将它们注入打印机设置。
-
从 sn-p 中完全不清楚printerSettings 对象是如何应用于实际打印作业的。您的代码中也缺少该内容可以解释问题的原因。
-
不,它没有。请阅读我的帖子,不仅是代码。我使用 Aspose 进行打印,但根本问题与 Apsose 无关。
标签: c# .net winforms printing printer-properties