は、どのように私はCシャープコードは、プログラム
Q
は、プログラム
3
A
答えて
4
しないでくださいを使用してレポートビューアの印刷ボタンを呼び出すことができます。
最初にユーザーにプレビューを表示せずにレポートをプログラムで印刷します。印刷装置の名前を指定するだけで、ユーザーの介入なしにレポートが自動的に印刷されます。サンプルコードはWalkthrough: Printing a Local Report without Previewです。
0
私は正常に使用している:
this.reportviewer1.PrintDialog();
をすることにより、ユーザは、印刷を制御することができ、印刷ダイアログを示しています。希望は助ける?
+0
ReportViewer1 – monstro
+0
に属するPrintDialog()というメソッドは動作しません。 –
0
directly copy this code in a class called "Printing" and Call the "Run" method with your reportviewer name as parameter. Example obj.Run(reportviewer1);
////////////////////////////////////////////////////////////////////////////////////
using System;
using System.IO;
using System.Data;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
class Printing
{
private int m_currentPageIndex;
private IList m_streams;
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
Stream stream = new MemoryStream();
m_streams.Add(stream);
return stream;
}
private void Export(LocalReport report)
{
string deviceInfo =
@"
EMF
8.5in
11in
0.25in
0.25in
0.25in
0.25in
";
Warning[] warnings;
m_streams = new List();
report.Render("Image", deviceInfo, CreateStream,
out warnings);
foreach (Stream stream in m_streams)
stream.Position = 0;
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new
Metafile(m_streams[m_currentPageIndex]);
// Adjust rectangular area with printer margins.
Rectangle adjustedRect = new Rectangle(
ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
ev.PageBounds.Width,
ev.PageBounds.Height);
// Draw a white background for the report
ev.Graphics.FillRectangle(Brushes.White, adjustedRect);
// Draw the report content
ev.Graphics.DrawImage(pageImage, adjustedRect);
// Prepare for the next page. Make sure we haven't hit the end.
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
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;
printDoc.Print();
}
}
public void Run(ReportViewer rpt)
{
Export(rpt.LocalReport);
Print();
}
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
}
関連する問題
- 1. は、プログラム
- 2. はプログラム
- 3. は、プログラム
- 4. は、プログラム
- 5. はプログラム
- 6. はプログラム
- 7. プログラムは
- 8. はプログラム
- 9. はプログラム
- 10. は、フォーム、プログラム
- 11. Cプログラムは
- 12. ソフトウェアは、J2MEプログラム
- 13. は、プログラムのJava
- 14. はプログラム的
- 15. Appiumドライバは、プログラム
- 16. はプログラム的
- 17. WPFは、プログラム
- 18. は私のプログラム
- 19. の図は、プログラム
- 20. は、プログラムのC#
- 21. は、それがプログラム
- 22. はプログラムでhtmlページ
- 23. 私はプログラム(JAVA/FX)
- 24. OutlookはプログラムでXSL
- 25. は、DataGrid ColumnHeaderStyleがプログラム
- 26. プログラムは、Xcodeの4.5
- 27. Google ChromeはJsfiddleプログラム
- 28. はプログラムJSTL ELコンテキスト
- 29. はプログラムのどこ
- 30. はプログラムでバインドDataGridTemplateColumn
しかし、私はレポートビューアコントロールに.rdlcファイルを表示し、カスタムボタンを使用してそのレポートファイルを印刷する必要があります。この問題を解決するには? – user1146956
@ user1146956:ボタンやビューアのコントロールを取り除く必要はありません。しかし、ユーザーの介入なしで*レポート*を印刷したい場合は、上記のリンクのようにしてください。コードを使用してボタンをクリックしないでください。それは決してうまくいかないでしょう。 –