PrintPreviewDialog跳转到显示的最后一页

时间:2016-11-23 10:39:41

标签: c# .net print-preview

我在C#中有一个Windows窗体应用程序,并且正在使用PrintPreviewDialog。我的多页文档正确显示每个页面,在对话框中,我可以单击右上角的页码选择器来更改我正在查看的页面。

现在,当我关闭此对话框而不打印,并尝试在同一组数据上再次运行相同的对话框时,对话框会打开,显示我关闭时的最后一页编号。

问题:如何在打开时让打印预览对话框显示第一页,这样用户就不必手动将其回滚到第1页?

具体细节: System.Windows.Forms.PrintPreviewDialog在设计视图中从工具拖动到表单上。 使用Visual Studio Community 2015版本14.0.25431.01更新3 .NET Framework版本4.6.01586

提前感谢您抽出宝贵时间提供帮助。我是一名学生,四周前才开始学习C#,9周前开始学习.NET,但是已经用其他形式的Basic编程超过30年。

1 个答案:

答案 0 :(得分:0)

不确定这是否是最佳解决方案,但它确实有效。在将文档分配给我的PrintPreviewDialog对象之前,我创建了一个新文档并使用旧变量引用它:

std::string value; Poco::XML::Node* node = rootNode->getNodeByPath("//aaa"); // the Node is the Element aaa if (node && node->firstChild() && node->firstChild()->nodeType() == Poco::XML::Node::TEXT_NODE) value = node->firstChild()->nodeValue(); // firstChild of the Element is the Text node, nodeValue() give its text (you should also Poco::trim() it) // same for "//bbb"

其中ppdPrinter是在设计视图中创建的控件的名称。我不喜欢它必须创建一个打印预览对话框的新实例才能工作,但我会将自己的问题标记为可以帮助其他任何人的利益。

我已经尝试处理该对象,在分配之前将文档设置为null,并查看document.PrintSettings以查找任何选项,这是我能想到的最好的。

我会欢迎任何不会为每个打印作业创建新PPD对象的解决方案。