

このクラスは、複数のグリッドを、他のカスタムコンテンツと共に既存の System.Drawing.Printing.PrintDocumentオブジェクトに出力するために使用できます。
それを使用するには、出力するグリッドごとに1つの PrintDocumentGridRendererを作成します。それから、ドキュメントのイベントを処理して、 CurrentPageプロパティの値が PageCountに等しくなるまでレンダラの PrintPage(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
PrintDocumentGridRenderer _g1, _g2;
PrintDocument printDocument1;
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