私はこれにいくつかの問題を発見しましたが、私のロジックに役立つものは何も見つかりませんでした。今、私が何をしたいのかPrintPageチャートコントロールを印刷中にイベントが無限ループに留まる
public int AreaCounter { get; set; } = 0;
public PrintDocument pd { get; set; }
public void PrintCharts(DataTable dt)
{
foreach (DataRow row in dt.Rows)
{
//after a couple of rows - here is code for creating
//a new chartArea and binding the points to the series
//plus binding that series to the area
if(// two chartAreas have been created with each one having a chart)
{
PrintChartControl();
}
AreaCounter++;
}
}
private void PrintChartControl()
{
pd.PrintPage += pd_PrintPage;
pd.Print();
}
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
if (AreaCounter < 11) //12 ChartAreas have to be created
e.HasMorePages = true;
else
e.HasMorePages = false;
var myRec = e.MarginBounds;
Container.chart1.Printing.PrintPaint(e.Graphics, myRec);
}
:私は、コードを(それがあまりにも多くなるので、すべてではない示す)以下きたDataTableを通じて Iループを。いくつかの行ごとに、私は新しいChartAreaを作成し、この行からいくつかの値をSeriesにバインドし、これをChartAreaにバインドします。私はChartAreasをChartコントロールに実際に描画しています。 2つのChartAreasごとに、コントロールを印刷して、それをクリーニングし、次の2つのChartAreasを描画します(最後に12があり、チャートコントロールに6倍の描画)。これは動作しますが、次のようにしたいと考えています: 最後に6ページがあるように、すべてのChart Control用の新しいページを印刷イベントに追加して、これを1つのファイル(pdf)に印刷します。何とかして、e.HasMorePagesプロパティのためにprintPageイベントの不定ループに入ります。これはチャートとどのように機能しますか? ありがとうございます!
? –
申し訳ありません。コードを編集しました – Canox
PrintPageイベントハンドラ内で、印刷ロジックとループの制御を行う必要があります。 「この私の答え」(http://stackoverflow.com/a/32514337/578411)が役立つかどうかを見てください。 – rene