即使值设置打印范围不工作(Print range not working even if value

2019-10-22 09:28发布

我有一个简单的打印解决方案,建立和正常的打印工作正常(测试了好几次),但是当我使用PrintDialog类指定一个自定义页面范围,这是因为如果该范围ingored。 当我调试我检查的PrintDocument对象,并确认该值范围是正确的,但打印机生产的最终产品并不多,我把它的值。

这里是我的代码:

            printDialog.Document = printdoc;
            printDialog.AllowSomePages = true;

            if (printDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                printdoc.PrinterSettings.FromPage = printDialog.PrinterSettings.FromPage;
                printdoc.PrinterSettings.ToPage = printDialog.PrinterSettings.ToPage;
                printdoc.PrinterSettings.PrintRange = printDialog.PrinterSettings.PrintRange;

                printPreviewDialog.Document = printdoc;
                printPreviewDialog.FindForm().WindowState = FormWindowState.Maximized;
                printPreviewDialog.ShowDialog();
            }

*注 - printdoc是System.Drawing.Printing.PrintDocument的实例。 我在的PrintDocument的PrintPage事件处理程序中添加代码来填充我打印页面。

Answer 1:

你需要告诉它应该能够接受页面范围用户输入打印对话框。 要做到这一点,你可以指定PrinterSettings.PrintRange

var printDialog = new PrintDialog();
printDialog.AllowSomePages = true; //May not be needed
printDialog.PrinterSettings.PrintRange = PrintRange.SomePages; //Needed
if(printDialog.ShowDialog() == DialogResult.OK)
{
    // ... do the rest here
}

注意:你应该得到的主要外卖的是,你需要设置PrintDialog.AllowSomePages = true为了告诉对话框仅打印那些范围(从/ ToPage一起)。 另外,我不知道,如果设置AllowSomePages对话框关闭后才会生效,所以这就是为什么我之前把代码ShowDialog 。 您可以尝试在您方便的设置if语句里面。



文章来源: Print range not working even if values are set