このクラスは、複数のグリッドを、他のカスタムコンテンツと共に既存の System.Drawing.Printing.PrintDocumentオブジェクトに出力するために使用できます。
それを使用するには、出力するグリッドごとに1つの PrintDocumentGridRenderer を作成します。それから、ドキュメントのイベントを処理して、 CurrentPageプロパティの値が PageCountに等しくなるまでレンダラの C1.Win.C1FlexGrid.PrintDocumentGridRenderer.PrintPage(System.Drawing.Printing.PrintPageEventArgs)イベントを呼び出します。
下のコードは、2つのグリッドをレンダリングして1つの System.Drawing.Printing.PrintDocumentに出力します。Private _g1, _g2 As PrintDocumentGridRenderer Private printDocument1 As Printing.PrintDocument Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'ボタンのクリック時、印刷プレビューダイアログを表示します。 Using dlg As New PrintPreviewDialog() dlg.Document = Me.printDocument1 dlg.ShowDialog(Me) End Using End Sub Private Sub printDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) 'グリッドのレンダラを作成し、印刷オプションを設定します。 _g1 = New PrintDocumentGridRenderer(flex1) _g1.Options = PrintGridFlags.ActualSize 'グリッドのレンダラを作成し、印刷オプションを設定します。 _g2 = New PrintDocumentGridRenderer(flex2) _g2.Options = PrintGridFlags.FitToPageWidth Or PrintGridFlags.ExtendLastCol End Sub Private Sub printDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) ' 1つめのグリッドをレンダリングします。 If (_g1.CurrentPage < _g1.PageCount) Then _g1.PrintPage(e) e.HasMorePages = True ' 2つめのグリッドをレンダリングします。 ElseIf (_g2.CurrentPage < _g2.PageCount) Then _g2.PrintPage(e) e.HasMorePages = _g2.CurrentPage < _g2.PageCount End If End Sub
using System.Drawing.Printing; PrintDocumentGridRenderer _g1, _g2; PrintDocument printDocument1 = new PrintDocument(); printDocument1.BeginPrint += printDocument1_BeginPrint; printDocument1.PrintPage += printDocument1_PrintPage; private void button1_Click(object sender, EventArgs e) { //ボタンのクリック時、印刷プレビューダイアログを表示します。 using (PrintPreviewDialog dlg = new PrintPreviewDialog()) { dlg.Document = this.printDocument1; dlg.ShowDialog(this); } } void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e) { // グリッドのレンダラを作成し、印刷オプションを設定します。 _g1 = new PrintDocumentGridRenderer(flex1); _g1.Options = PrintGridFlags.ActualSize; // グリッドのレンダラを作成し、印刷オプションを設定します。 _g2 = new PrintDocumentGridRenderer(flex2); _g2.Options = PrintGridFlags.FitToPageWidth | PrintGridFlags.ExtendLastCol; } void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { // 1つめのグリッドをレンダリングします。 if (_g1.CurrentPage < _g1.PageCount) { _g1.PrintPage(e); e.HasMorePages = true; } // 2つめのグリッドをレンダリングします。 else if (_g2.CurrentPage < _g2.PageCount) { _g2.PrintPage(e); e.HasMorePages = _g2.CurrentPage < _g2.PageCount; } }
System.Object
C1.Win.C1FlexGrid.PrintDocumentGridRenderer