C#打印机设置无效

C#打印机设置无效,c#,printing,C#,Printing,在下面的代码段中,我获得默认打印机设置,并使用从组合框中选择的打印机名称覆盖打印机名称,该组合框已从InstalledPrinters属性填充 然后我将拷贝数设置为一个小的整数值 public void Print(){ CurrentPageIndex = 0; PrintDocument printDoc = new PrintDocument(); printDoc.DocumentName = "Report"; print

在下面的代码段中,我获得默认打印机设置,并使用从组合框中选择的打印机名称覆盖打印机名称,该组合框已从InstalledPrinters属性填充

然后我将拷贝数设置为一个小的整数值

public void Print(){
        CurrentPageIndex = 0;
        PrintDocument printDoc = new PrintDocument();
        printDoc.DocumentName = "Report";
        printDoc.PrinterSettings = new PrinterSettings();
        printDoc.PrinterSettings.PrinterName = this.PrinterName;
        printDoc.PrinterSettings.Copies = this.Copies;

        if (!printDoc.PrinterSettings.IsValid)
        {
            throw new ArgumentException("PrinterSettings");
        }

        ImageDimensions = new FrameDimension(RenderedImage.FrameDimensionsList[0]);
        FrameCount = RenderedImage.GetFrameCount(ImageDimensions);

        printDoc.PrintPage += new PrintPageEventHandler(PrintPageHandler);

        printDoc.Print();
    }

    private void PrintPageHandler(object sender, PrintPageEventArgs e)
    {
        RenderedImage.SelectActiveFrame(ImageDimensions, CurrentPageIndex);
        e.Graphics.DrawImage(RenderedImage, new Point(0, 0));
        CurrentPageIndex++;
        e.HasMorePages = (CurrentPageIndex < 0);
    }
public void Print(){
CurrentPageIndex=0;
PrintDocument printDoc=新的PrintDocument();
printDoc.DocumentName=“报告”;
printDoc.PrinterSettings=新的PrinterSettings();
printDoc.PrinterSettings.PrinterName=this.PrinterName;
printDoc.PrinterSettings.Copies=此.Copies;
如果(!printDoc.PrinterSettings.IsValid)
{
抛出新的ArgumentException(“PrinterSettings”);
}
ImageDimensions=新的FrameDimension(RenderImage.FrameDimensionsList[0]);
FrameCount=RenderImage.GetFrameCount(图像尺寸);
printDoc.PrintPage+=新的PrintPageEventHandler(PrintPageHandler);
printDoc.Print();
}
私有void PrintPageHandler(对象发送方,PrintPageEventArgs e)
{
RenderImage.选择ActiveFrame(图像尺寸、当前页面索引);
e、 Graphics.DrawImage(渲染图像,新点(0,0));
CurrentPageIndex++;
e、 HasMorePages=(CurrentPageIndex<0);
}
如果(!printDoc.printersettings.IsValid)检查行
中的printersettings时,我总是发现设置无效


我认为采用默认设置并更改打印机名称和份数会使我获得有效的打印机设置。

这是打印机驱动程序的问题。请尝试更新驱动程序,或选择其他打印机,或忽略IsValid,然后查看结果。很遗憾,无法更新驱动程序。我试图忽略IsValid,但打印时出错。我接受的解决方案是简单地用标准打印机打印。