0

実行時にユーザーが操作する動的チャート コントロールがあります。

ユーザーは、チャートに複数のシリーズを追加できます。

ユーザーが各シリーズを日付でフィルタリングする方法を実装しようとしています。

MSDN は次を提供します。

// Filters all points where the X value is less than, or equal to, a specific date.    
// The resulting data is stored in an output series, preserving the original data.    
myDataManip.Filter(CompareMethod.LessOrEqual, DateTime.Parse("1/1/2001").ToOADate(), "MySeries", "ResultSeries", "X");

単一のシリーズがあり、入力シリーズ名を知っていれば、これで問題ありません。

問題は、複数のシリーズを持つチャートにこれをどのように実装するかです。

ここに私がした簡単な回避策があります:

private void button2_Click(object sender, EventArgs e)
{
    var dt = dateTimePicker.Value;
    var tempSeries = new Series[chart1.Series.Count];
    try
    {
        for (var i = 0; i < chart1.Series.Count; i++)
        {
            tempSeries[i] = new Series
            {
                Name = chart1.Series[i].Name,
                IsVisibleInLegend = true,
                IsXValueIndexed = true
            };

            for (var j = 0; j < chart1.Series[i].Points.Count; j++)
            {
                if (DateTime.Parse(chart1.Series[i].Points[j].AxisLabel) <= dt)
                {
                    tempSeries[i].Points.Add(chart1.Series[i].Points[j]);
                }
            }
        }
        chart1.Series.Clear();
        for (var i = 0; i < tempSeries.Count(); i++)
        {
            chart1.Series.Add(tempSeries[i]);
        }
    }
    catch (Exception error)
    {
        MessageBox.Show(error.ToString());
    }
}
4

0 に答える 0