作成日: 2020/06/10 最終更新日: 2020/06/15
文書種別
制限事項
詳細
チャートビューをスクロールしたとき、チャートビューの領域外にあった日付に対してもPaintDayイベントが発生します。そのため、PaintDayでの処理内容によっては、パフォーマンスが影響を受けることがあります。
例えば、チャートビューの表示範囲を1/1~12/31に設定した後、実際に6/1がチャートに表示されている状態で水平スクロールすると、チャートビューの領域外だった1/1に対するPaintDayイベント等が発生します。垂直スクロールの場合も同様です。
これは、チャート領域が区分単位ごとに個々のグリッド列で管理されているのではなく、チャート領域全体を通して単一のグリッド列として実装されており、該当する日付の描画内容を確定するにあたり、スクロール領域外の日付に対しても描画のための計測処理を行っていることに起因します。
例えば、チャートビューの表示範囲を1/1~12/31に設定した後、実際に6/1がチャートに表示されている状態で水平スクロールすると、チャートビューの領域外だった1/1に対するPaintDayイベント等が発生します。垂直スクロールの場合も同様です。
これは、チャート領域が区分単位ごとに個々のグリッド列で管理されているのではなく、チャート領域全体を通して単一のグリッド列として実装されており、該当する日付の描画内容を確定するにあたり、スクロール領域外の日付に対しても描画のための計測処理を行っていることに起因します。
回避方法
PaintDayイベントでe.DateTime引数を調べ、表示されているチャート領域外の日付であれば、イベント処理をスキップします。
◎サンプルコード(VB)
◎サンプルコード(VB)
Private Sub C1GanttView1_PaintDay(sender As Object, e As C1.Win.C1GanttView.PaintDayEventArgs) Handles C1GanttView1.PaintDay
If e.DateTime < C1GanttView1.ScrollPosition.Date Then
Return
End If
'実際の処理
End Sub
◎サンプルコード(C#) private void C1GanttView1_PaintDay(object sender, C1.Win.C1GanttView.PaintDayEventArgs e)
{
if (e.DateTime < c1GanttView1.ScrollPosition.Date)
{
return;
}
//実際の処理
}
旧文書番号
85692