【问题标题】:How to Print without displaying a print popup in WPF如何在 WPF 中不显示打印弹出窗口进行打印
【发布时间】:2025-12-19 19:25:16
【问题描述】:
private void btnPrint_Click(object sender, RoutedEventArgs e)
        {
            PrintDialog dialog = new PrintDialog();
            if (dialog.ShowDialog() == true)
            {
                StackPanel stpanel;
                stpanel = PrintStakPanel;
                stpanel.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
                Size grdSize = stpanel.DesiredSize;
                Point grdPoint = new Point((dialog.PrintableAreaWidth - grdSize.Width) / 2, (dialog.PrintableAreaHeight - grdSize.Height) / 2);
                stpanel.Arrange(new Rect(grdPoint, grdSize));
                Grid.SetRow(stpanel, 0);
                dialog.PrintVisual(stpanel, "Cinema Ticket");

            }
        }

【问题讨论】:

  • 以正确的方式格式化您的代码。如果你这样发帖,没人会帮忙。
  • 好的,先生,我是 * 的新手。
  • 请添加您需要帮助的其他详细信息,而不是在标题中框定整个问题
  • 在我的应用程序中,这是一个正在 WPF 中开发的电影应用程序,我在网格中有要打印的电影票。现在的问题是我不想打开任何对话框(例如打印对话框),我只想单击“打印票证”按钮,并且应该打印网格中的所有票证而不要求页面布局等

标签: wpf


【解决方案1】:

您可以使用PrintDialog 而无需调用ShowDialog()....当前设置的打印机设置只会在您调用PrintVisual 时使用。

要执行更复杂的操作,您可以使用PrintTicket 以编程方式定义打印机设置。

更多详情请看这里:

【讨论】:

  • 我能得到一些关于 PrintTicket 类的知识吗?我没有得到 MSDN 中给出的任何内容。请谈谈 PrintTicket 的实现。
【解决方案2】:

不要在代码中调用 dialog.ShowDialog()。

【讨论】: