转载:http://www.voidcn.com/article/p-xgjbbsag-bwc.html
c# – 如何在printpreviewdialog中添加打印对话框?
我的老板要我创建具有打印功能的窗体,但他希望在预览后打印datagridview.
所以现在我鼓励这个问题,当我点击printpreviewdialog上的打印按钮时,我无法打印多套纸张或选择打印机或进行任何更改.当我点击按钮时,它将直接打印纸张.所以我希望加入printpreviewdialog和printdialog.
为什么printpreviewdialog和printdialog只能用于不同的按钮?当需要单击一个按钮进行预览并单击另一个按钮来打印多个设置并更改打印机时,缺乏可用性.
任何人都可以帮助我吗?
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();
}
PrintPreviewDialog上
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中有一个打印按钮,对于大多数情况来说仍然是合理的.但该按钮直接打印到您的默认打印机,从不显示对话框.
如果需要printpreview对话框中的打印对话框,则只需操作PrintPreviewDialog的ToolStrip即可.
正如Hans Passant所说,“打印预览在很大程度上取决于打印机和页面设置.”
但是printpreviewdialog中有一个打印按钮,对于大多数情况来说仍然是合理的.但该按钮直接打印到您的默认打印机,从不显示对话框.
如果需要printpreview对话框中的打印对话框,则只需操作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());
}
}