2012-02-23 39 views
1

我将在此前言说,作为初学者,让我的程序实际打印对我而言比我预期的更为痛苦,我只是很高兴拥有它加工。尽管用户选择了C#打印对话框始终使用默认打印机

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

这里是我的代码:

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打印机。

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

+0

是否有一个PrinterDialog,您可以使用..例如PrintDialog pDialog = new PrintDialog();还需要在pd.Print()之前选择或设置打印机名称; – MethodMan 2012-02-23 17:24:59

+0

@DJ KRAZE好吧,我需要使用的打印机对话框中显示的打印机名为PDFCreator。你碰巧知道我需要用来初始化它的语法吗?感谢您的回复 – wcard 2012-02-23 17:28:41

+0

问题解决!下面的马特T的解决方案就像一个魅力。再次感谢您的回复 – wcard 2012-02-23 17:34:29

回答

3

您需要将此pd.Print()之前添加到printToolStripMenuItem_Click,:

pd.PrinterSettings = printFD.PrinterSettings; 

希望帮助!

+0

非常感谢您的快速和简单的修复!它像一个魅力。喜欢简单的解决方案! – wcard 2012-02-23 17:33:02

相关问题