我正在尝试创建类似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在这种情况下不存在。
我需要帮助!
答案 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