[英]How to present print settings from print preview?
在我的 C# 项目中,我有 2 个打印功能。 一种直接打印文档,另一种向用户提供预览并在用户选择时进行打印。
当两种方法都有效时,direkt 打印版本会在打印文档之前显示打印设置窗口。
private void printButton_Click(object sender, EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printIssues;
printDialog.UseEXDialog = true;
if (DialogResult.OK == printDialog.ShowDialog())
{
printIssues.DocumentName = "Some Name";
printIssues.DefaultPageSettings.Landscape = true;
printIssues.Print();
}
}
private void previewButton_Click(object sender, EventArgs e)
{
PrintPreviewDialog printPreview = new PrintPreviewDialog();
printPreview.Icon = Properties.Resources.favicon;
printPreview.Document = printIssues;
printIssues.DefaultPageSettings.Landscape = true;
((Form)printPreview).WindowState = FormWindowState.Maximized;
printPreview.ShowDialog();
}
我首先展示预览的第二个版本,一旦我单击打印按钮,文档就会在默认打印机上打印,而不会出现“设置”窗口。 我尝试了一些东西并安静地搜索了一段时间,但找不到任何对我有帮助的东西。
我很感激你的帮助。
恐怕这是 PrintPreviewDialog 的一个已知限制。 它需要知道绘制布局的打印机,因此它使用默认打印机。
我过去也遇到过同样的问题,我相信可以通过在显示 PrintPreviewDialog 之前显示 PrintDialog 来解决。
private void previewButton_Click(object sender, EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
if (DialogResult.OK == printDialog.ShowDialog())
{
PrintPreviewDialog printPreview = new PrintPreviewDialog();
printPreview.Document = printIssues;
// this is were you take the printersettings from the printDialog
printPreview.Document.PrinterSettings = printDialog.PrinterSettings;
printIssues.DefaultPageSettings.Landscape = true;
printPreview.ShowDialog();
}
}
另一种解决方法是制作您自己的 PrintPreviewDialog。 但它需要更多的编码。
你能告诉我上面的代码是否适合你吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.