如何将打印对话框添加到printpreviewdialog?

2024-02-16

我的老板要我创建具有打印功能的窗口窗体,但他想要打印datagridview预览后。

所以现在我鼓励这个问题,我无法打印多套纸张或选择打印机或在单击打印按钮时进行任何更改printpreviewdialog.当我点击按钮时,它会直接打印纸张。所以我想加入printpreviewdialog and printdialog.

Why the printpreviewdialog and printdialog只能用在不同的按钮上吗?当需要单击一个按钮预览并单击另一个按钮打印多套以及更改打印机时,缺乏可用性。

任何人都可以帮助我吗?

打印对话框

DialogResult result = printDialog1.ShowDialog();
            // If the result is OK then print the document.
            if (result == DialogResult.OK)
            {
                position = 0;
                pageno = 1;
                printDocument2.DefaultPageSettings.Margins = new Margins(20, 20, 20, 20);
                printDocument2.OriginAtMargins = true;
                printPreviewDialog1.Document = printDocument2;
                printPreviewDialog1.ShowDialog();
            }   

打印预览对话框

printDocument3.DefaultPageSettings.Margins = new Margins(20, 20, 20, 20);
            printDocument3.OriginAtMargins = true;
            //((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false;
            printPreviewDialog1.Document = printDocument3;
            printPreviewDialog1.ShowDialog();

我知道已经晚了,但我认为有人仍然需要它。 正如 Hans Passant 所说,“打印预览在很大程度上取决于打印机和页面设置。” 但 printpreviewdialog 中有一个打印按钮,这在大多数情况下仍然是合理的。但该按钮直接打印到您的默认打印机,并且从不显示对话框。 如果您想要从打印预览对话框中创建打印对话框,您只需操作 PrintPreviewDialog 的 ToolStrip 即可。

就这样了(假设您初始化了 printPreviewDialog1、printDialog1 和 printDocument1 对象)

printPreviewDialog1.Document = printDocument1;
ToolStripButton b = new ToolStripButton();
b.Image = Properties.Resources.PrintIcon;
b.DisplayStyle = ToolStripItemDisplayStyle.Image;
b.Click += printPreview_PrintClick;
((ToolStrip)(printPreviewDialog1.Controls[1])).Items.RemoveAt(0);
((ToolStrip)(printPreviewDialog1.Controls[1])).Items.Insert(0, b);
printPreviewDialog1.ShowDialog();

使用上面的代码,您可以删除PrintPreview的ToolStrip上的默认打印按钮,并将其替换为新创建的“打印按钮”。该按钮现在有一个 Click 事件处理程序,通过使用它,您可以显示 PrintDialog。

private void printPreview_PrintClick(object sender, EventArgs e)
{
    try
    {
        printDialog1.Document = printDocument1;
        if (printDialog1.ShowDialog() == DialogResult.OK)
        {
            printDocument1.Print();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, ToString());
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将打印对话框添加到printpreviewdialog? 的相关文章

随机推荐