尽管用户选择,C#打印对话框始终使用默认打印机

时间:2012-02-23 17:17:42

标签: c# printing

我会先说这个,作为一个初学者,让我的程序实际打印对我来说比我预期的更痛苦,我很高兴让它工作。

如果有一个简单的解决方案可以防止我的代码始终使用默认打印机,那么我会很高兴。如果没有,我需要重做,那么我会认为这是一个很好的学习机会:)无论哪种方式,你都可以提供任何帮助。非常感谢。

这是我的代码:

void PrintImage(object o, PrintPageEventArgs e)
{
    int x = SystemInformation.WorkingArea.X;
    int y = SystemInformation.WorkingArea.Y;
    int width = this.Width;
    int height = this.Height;
    Rectangle bounds = new Rectangle(x, y, width, height);
    Bitmap img = new Bitmap(width, height);

    this.DrawToBitmap(img, bounds);
    Point p = new Point(75, 75);
    e.Graphics.DrawImage(img, p);
}

private void printToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult result = printFD.ShowDialog();
    if (result == DialogResult.OK)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(PrintImage);
        pd.Print();
    }
}

我有一个打印对话框,用户可以选择他们的打印机,但正如我所提到的,无论选择什么,总是使用默认打印机。为了详细说明并缩小此解决方案的范围,我只希望用户能够选择我们的.pdf打印机。

提前感谢您提供的任何帮助。我对这个社区很陌生,但这里丰富的知识和快速反应已经让我感到惊讶。我真的很感谢你为像我这样的初学者提供的帮助。干杯!

1 个答案:

答案 0 :(得分:4)

在pd.Print()之前,你需要将它添加到printToolStripMenuItem_Click:

pd.PrinterSettings = printFD.PrinterSettings;

希望有所帮助!