使用asp.net和RDLC报表开发项目,自己做了一个打印按钮(因谷歌游览器不现实的原因),调用了PrintDialog,PageSetupDialog,PrintPreviewDialog相关对话框的类,结果出现的对话框出现在游览器的后面,核心代码如下:
private void Print()
{
if (m_streams == null || m_streams.Count == 0)
throw new Exception("Error: no stream to print.");
PrintDocument printDoc = new PrintDocument();
if (!printDoc.PrinterSettings.IsValid)
{
throw new Exception("Error: cannot find the default printer.");
}
else
{
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
m_currentPageIndex = 0;
PrintDialog pd = new PrintDialog();
pd.Document = printDoc;
DialogResult rc1 = pd.ShowDialog();
if (DialogResult.OK == rc1) //如果确认,将会覆盖所有的打印参数设置,直接打印不设置打印对话框
{
//页面设置对话框(可以不使用,其实PrintDialog对话框已提供页面设置)
PageSetupDialog psd = new PageSetupDialog();
psd.Document = printDoc;
DialogResult rc2 = psd.ShowDialog();
if (DialogResult.OK == rc2)
{
//打印预览,拿到这里面用不好使,我的要求并不高,仅仅是这个对话框跑到最上面SetDesktopBounds,这应该是一个bug
PrintPreviewDialog ppd = new PrintPreviewDialog();
ppd.TopLevel = true;
ppd.Document = printDoc;
DialogResult rc3 = ppd.ShowDialog();
if (DialogResult.OK == rc3)
printDoc.Print(); //打印,
}
}
}
}
请高手赐教解决方法
1 个解决方案
#1
没人回答,回答给分啊
#1
没人回答,回答给分啊