Printing 打印RDLC文件而不显示“从窗体打印预览”按钮单击

Printing 打印RDLC文件而不显示“从窗体打印预览”按钮单击,printing,reportviewer,rdlc,Printing,Reportviewer,Rdlc,我有一个C#4.0 WinForm,可以点击按钮进行打印。在Form Load事件中,我填充了一个自定义对象,并将该对象粘贴到该对象的列表中。对象作为数据源直接映射到RDLC,如果我使用报表查看器,我可以看到正确填充的RDLC文件。我在MSDN上找到了这样做的链接(http://msdn.microsoft.com/en-us/library/ms252091.aspx),但它在出口方式上爆炸了 有人知道如何在不使用ReportViewer预览文件的情况下打印RDLC文件的好例子吗?我只想点击一

我有一个C#4.0 WinForm,可以点击按钮进行打印。在Form Load事件中,我填充了一个自定义对象,并将该对象粘贴到该对象的列表中。对象作为数据源直接映射到RDLC,如果我使用报表查看器,我可以看到正确填充的RDLC文件。我在MSDN上找到了这样做的链接(http://msdn.microsoft.com/en-us/library/ms252091.aspx),但它在出口方式上爆炸了

有人知道如何在不使用ReportViewer预览文件的情况下打印RDLC文件的好例子吗?我只想点击一个按钮,让我的列表绑定到RDLC文件(我已经开始工作)并直接打印到打印机上

有什么想法吗

好的,那么在上的链接确实非常适合我打印RDLC文件的需要,而不需要弹出打印对话框。我犯的错误是命名我的
ReportDataSource
。与示例中一样,MSDN将其
ReportDataSource
命名为“Sales”,与RDLC XML codebehind中
DataSet
的名称相匹配。我犯了一个错误,将我的
ReportDataSource
命名为“Sale”,这导致两者不同步,也无法打印


问题解决了

哎哟,那就行了。很高兴你明白了!我遇到了来自MSDN的示例代码的问题。如果我单击“打印”按钮(即执行示例中的代码),一切都会正常工作,但当我尝试再次单击打印时(大约10秒钟内),我会收到一条消息,说明CreateStream方法中生成的EMF文件正在使用中(该进程无法访问文件“Sales.EMF”,因为它正被另一个进程使用。)我有个例外。我怎样才能避免这种情况?我将让我的用户打印项目的速度超过文件可以从锁中释放的速度。好的,修复了它。问题在于,MSDN的示例是一个单独的类,只需执行一次就可以实现IDisposable。在我的例子中,我将该类作为一个助手文件,在每次表单加载时实例化一次,因此在表单的生命周期结束之前,永远不会调用Dispose()。因此,我没有实现IDisposable,而是将Dispose()方法设为私有,并在Print()执行后显式调用它。这样,我就可以处理()生成的流,而不会得到IOExceptions。我们可以将其用于使用IIS的web应用程序吗????在调试模式下,它可以正常工作,但当我们在IIS中托管应用程序时,它会停止工作,并且不会出现异常。