作成日: 2022/07/26 最終更新日: 2022/12/21
文書種別
不具合
状況
修正済み
詳細
複数の系列があるとき、系列の表示を切り替えてもスクロールバーの範囲が更新されません。
そのため、チャート全体が描画されない現象が発生することがあります。
例えば系列1/系列2があるとき、系列1を表示した後、これを非表示にして系列2を表示しても、スクロールバーの範囲は系列1のままになります。そのため系列2は、系列1の最小から最大までの範囲しか表示されません。
そのため、チャート全体が描画されない現象が発生することがあります。
例えば系列1/系列2があるとき、系列1を表示した後、これを非表示にして系列2を表示しても、スクロールバーの範囲は系列1のままになります。そのため系列2は、系列1の最小から最大までの範囲しか表示されません。
回避方法
この問題は2022J v3(4.6.20223.777)で修正されました。
※修正版を適用しない場合の回避方法は以下のとおりです
系列の表示を切り替える際に、以下のコードを実行します。
※修正版を適用しない場合の回避方法は以下のとおりです
系列の表示を切り替える際に、以下のコードを実行します。
・・・
// 系列の表示切替時にResetScrollbarを呼び出す
ResetScrollbar();
・・・
// ResetScrollbar内で、Y軸の最小・最大をリセットし、Renderedイベントを呼び出す
void ResetScrollbar()
{
flexChart.BeginUpdate();
flexChart.Rendered += flexChart_Rendered;
// reset axis limits
flexChart.AxisY.Min = flexChart.AxisY.Max = double.NaN;
flexChart.EndUpdate();
}
//Renderedイベント内で、Y軸の最小・最大を実データの最小値・最大値に設定
private void flexChart_Rendered(object sender, C1.WPF.Chart.RenderEventArgs e)
{
flexChart.Rendered -= flexChart_Rendered;
// reset scrollbar values
flexChart.AxisY.Scrollbar.LowerValue = flexChart.AxisY.Scrollbar.Minimum =
((IAxis)flexChart.AxisY).GetMin();
flexChart.AxisY.Scrollbar.UpperValue = flexChart.AxisY.Scrollbar.Maximum =
((IAxis)flexChart.AxisY).GetMax();
}