C# 如何将PictureBox.Image导入PrintPreviewDialog?

C# 如何将PictureBox.Image导入PrintPreviewDialog?,c#,picturebox,print-preview,C#,Picturebox,Print Preview,我一直在这里寻找答案,但我找到的只是如何打印图像,而不是如何将图像放入printPreviewDialog。它应该足够简单: private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e) { printPreviewDialog1.Document = pictureBoxMain.Image; printPreviewDialog1.ShowDialog

我一直在这里寻找答案,但我找到的只是如何打印图像,而不是如何将图像放入printPreviewDialog。它应该足够简单:

    private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
    {
        printPreviewDialog1.Document = pictureBoxMain.Image; 
        printPreviewDialog1.ShowDialog();      
    }
然而,我得到了错误

无法隐式转换类型 “System.Drawing.Image”到“System.Drawing.Printing.PrintDocument”

没有处理此转换的内置转换。那么,如何从pictureBox中进行简单的打印预览呢

编辑:好的,打印预览正在工作。打印不起作用。我关心的一个问题是,我在“打印”对话框中没有“确定”选项,我有“应用”、“取消”和“打印”。Visual Studio将不接受DialogResult。打印为可接受的响应编译器错误。这是我目前的代码,欢迎推荐,我显然不太明白这一点。谢谢

//Working now    
private void printPreviewToolStripMenuItem_Click(object sender, EventArgs e)
    {
        printDocument1.DocumentName = pictureBoxMain.Image.ToString();
        printDialog1.Document = printDocument1;
        printPreviewDialog1.Document = printDialog1.Document;   
        printPreviewDialog1.ShowDialog();      
    }

//Not printing 
private void printToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        printDocument1.OriginAtMargins = true;
        printDocument1.DocumentName = pictureBoxMain.Image.ToString();
        if (printDialog1.ShowDialog() == DialogResult.OK)  
            printDialog1.Document = printDocument1;        
    }

//If this is needed, I cannot find a way to call this from within the print menu click event without generating an error, EventArgs e does not get along with PrintPageEventArgs e.  
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawImage(pictureBoxMain.Image, 0, 0);
    }
编辑:我尝试进行以下更改以测试问题是否是缺少OK按钮。它仍然没有打印出来。所以我不认为缺少OK按钮是问题所在

 if (printDialog1.ShowDialog() != DialogResult.Cancel)  
     printDialog1.Document = printDocument1;   

谢谢

预览只是:打印页面的预览。因此,您需要对printPage事件进行编码。在这里,您可以使用picturebox中的图像制作drawimage。。或者换句话说:获得预览并不比真正的打印“简单”,它是完全相同的代码!好的,我会用printDialog打印页面,谢谢。但是如何将drawimage从该方法获取到printPreviewDialog方法中呢?预览将使用printpage事件创建预览。