关于C#的问题:点击完printpreviewdialog中的“打印按钮”后想让对话框自动关闭,代码怎么写?

如何实现点击打印按钮后自动关闭对话框

img

相关打印触发的事件是什么呢?找了半天找不到。

在C#中,可以通过设置PrintDocument的PrintPage事件来实现打印功能,并且可以使用PrintPreviewDialog来进行预览。

当用户点击PrintPreviewDialog中的“打印”按钮时,会自动触发PrintDocument的PrintPage事件,并在该事件完成后自动关闭对话框。

具体实现可以参考以下示例代码:

private void btnPrint_Click(object sender, EventArgs e)
{
    // 创建PrintDocument并设置PrintPage事件
    PrintDocument printDoc = new PrintDocument();
    printDoc.PrintPage += new PrintPageEventHandler(PrintDocument_PrintPage);

    // 创建PrintPreviewDialog并设置打印文档
    PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
    printPreviewDialog.Document = printDoc;

    // 显示PrintPreviewDialog
    DialogResult result = printPreviewDialog.ShowDialog();

    // 如果用户点击了“打印”按钮,则关闭对话框
    if (result == DialogResult.OK)
    {
        printPreviewDialog.Dispose();
    }
}

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    // 在这里编写打印代码
}

在上面的示例中,btnPrint_Click方法是打印按钮的点击事件,其中创建PrintDocument并设置PrintPage事件,然后创建PrintPreviewDialog并设置打印文档。最后显示PrintPreviewDialog并等待用户操作。当用户点击“打印”按钮时,会自动触发PrintDocument的PrintPage事件,在PrintPage事件完成后,对话框会自动关闭。

至于相关打印触发的事件是什么,可以参考上面的示例代码中的PrintDocument_PrintPage方法,其中可以编写实际的打印代码。此外,可以参考C#的打印文档相关教程来学习更多打印方面的知识。
如果我的回答解决了您的问题,请采纳我的答案


// 调用PrintPreviewDialog打印文档
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    PrintPreviewDialog previewDialog = new PrintPreviewDialog();
    previewDialog.Document = this.printDocument1;
    previewDialog.ShowDialog();
    if (previewDialog.ShowDialog() == DialogResult.OK)
    {
        previewDialog.Close();
    }
}
PrintPreviewDialog.PrintPreviewControl.ExecCommand(PrinterCommands.Print, new object[] { true, false }); 
PrintPreviewDialog.Close();

在PrintPreviewDialog中点击“打印”按钮后,会触发PrintDocument的PrintPage事件,可以在该事件中添加关闭对话框的代码。具体步骤如下:

  1. 在PrintDocument的PrintPage事件中添加以下代码:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    // 打印逻辑,根据实际需要编写

    // 关闭对话框
    ((PrintPreviewDialog)this.Parent).Close();
}


在这段代码中,先编写打印逻辑,然后在最后使用(PrintPreviewDialog)this.Parent获取对话框的父窗体,然后调用Close()方法关闭对话框。

  1. 给PrintDocument的PrintPage事件绑定处理程序。可以在PrintPreviewDialog的Load事件中添加以下代码:
private void printPreviewDialog1_Load(object sender, EventArgs e)
{
    printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
}


在这段代码中,给PrintDocument的PrintPage事件绑定了printDocument1_PrintPage方法作为处理程序。

这样,当用户点击“打印”按钮后,先执行PrintDocument的PrintPage事件中的打印逻辑,然后自动关闭对话框。

希望这可以帮助到你。

在 PrintPreviewDialog 对话框中点击打印按钮后,需要在 PrintDocument 对象的 PrintPage 事件中添加代码来关闭对话框。可以使用以下代码:

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
    // 打印页面内容,可以根据需要添加
    // ...

    // 关闭打印预览对话框
    printPreviewDialog1.Hide();
}

在上述代码中,printDocument1_PrintPage 方法是 PrintDocument 对象的 PrintPage 事件处理程序。当打印页面内容完成后,可以在该事件处理程序中使用 printPreviewDialog1.Hide() 关闭打印预览对话框。需要注意的是,Hide() 方法只是将对话框隐藏,并不会销毁对话框,可以通过设置 printPreviewDialog1.Document 属性为 null 来销毁对话框。

可以将上述代码添加到你的 C# 代码中,然后将 PrintDocument 对象的 PrintPage 事件与该方法关联,即可在点击打印按钮后关闭打印预览对话框。

在打印按钮的 Click 事件处理程序中,可以使用 dialog.Dispose() 或 dialog.Close() 方法关闭打印预览对话框。

private void btnPrint_Click(object sender, EventArgs e)
{
    // 执行打印操作
    // ...

    // 关闭打印预览对话框
    PrintPreviewDialog dialog = (PrintPreviewDialog)((Button)sender).Parent;
    dialog.Dispose();
}


实例:

private void printPreviewDialog1_Load(object sender, EventArgs e)
{
    // 在此处设置打印预览内容
}

private void btnPrint_Click(object sender, EventArgs e)
{
    // 设置打印按钮的 DialogReslut 为 OK,以便在点击后自动关闭打印预览对话框
    printPreviewDialog1.DialogResult = DialogResult.OK;
}

private void btnPreview_Click(object sender, EventArgs e)
{
    // 打开打印预览对话框
    printPreviewDialog1.ShowDialog();
}

你可以在后面加上
PrintPreviewDialog.Close();