打印具有代码需求的文档

时间:2014-07-17 02:20:14

标签: c#

我正在尝试创建类似NotePad的程序。对于打印和打印预览,我遇到了问题。

以下是代码:

private void imprimerToolStripMenuItem_Click(object sender, EventArgs e)
{
    System.Drawing.Printing.PrintDocument prntDoc = new System.Drawing.Printing.PrintDocument();           
}

private void aperçuavantimpressionToolStripMenuItem_Click(object sender, EventArgs e)
{
    PrintPreviewDialog preview = new PrintPreviewDialog();
    prntDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(prntDoc_PrintPage);
    preview.Document = prntDoc;
    if (preview.ShowDialog(this) == DialogResult.OK)
    {
        prntDoc.Print();
    }
}

我得到一个错误,说prntDoc在这种情况下不存在。

我需要帮助!

3 个答案:

答案 0 :(得分:2)

你的问题在这里:

private void imprimerToolStripMenuItem_Click(object sender, EventArgs e)
{
    System.Drawing.Printing.PrintDocument prntDoc = new System.Drawing.Printing.PrintDocument();           
}

变量仅限于此范围(imprimerToolStripMenuItem_Click方法),您应该这样做:

//know the variable is declared in the class scope.
System.Drawing.Printing.PrintDocument prntDoc;
private void imprimerToolStripMenuItem_Click(object sender, EventArgs e)
{
    prntDoc = new System.Drawing.Printing.PrintDocument();           
}

答案 1 :(得分:1)

您在方法prntDoc中声明imprimerToolStripMenuItem_Click。因此,它仅适用于该方法,而不是aperçuavantimpressionToolStripMenuItem_Click

我怀疑您应该将创建prntDoc的代码移动到您使用它的方法中。

答案 2 :(得分:1)

你试图引用你在上面的方法中声明的prntDoc,如果你想引用prntDoc,那么你需要调用你声明它移动这一行的方法

   System.Drawing.Printing.PrintDocument prntDoc = new    System.Drawing.Printing.PrintDocument();           

进入你的方法

    aperçuavantimpressionToolStripMenuItem_Click