4

を にデータバインドしようとしてChartDataTableます。新しい行が追加されたときにチャートに新しい行を表示したいのですが、テーブルに新しい行が追加されてもチャートが更新されません。tableと の両方にtableDataSource新しい行が含まれていることを確認しましたchart.Series["TestTable"].Points.Countが、 から変更されることはありません5

Can't bind datatable to Chart Controlという質問に基づくサンプル コードを以下に示します。以下のコードにエラーや脱落があるかどうか、または同じ目的を達成する別のより良いアプローチがあるかどうかを知りたいです。にポイントを手動で追加する方法は知っていますSeriesが、データバインディングを使用してこれを行う方法を知りたいです。

Random r = new Random();
Timer timer = new Timer();
DataTable table = new DataTable("TestTable");
DateTime date = new DateTime(2013, 1, 1);
IList tableDataSource = null;

void timer_Tick(object sender, EventArgs e)
{
    table.Rows.Add(date, r.NextDouble());
    date = date.AddDays(1);

    chart.Update();
}

void MainForm_Load(object sender, EventArgs e)
{
    table.Columns.Add("Date", typeof(DateTime));
    table.Columns.Add("Percent", typeof(double));

    for (int i = 0; i < 5; i++)
    {
        table.Rows.Add(date, r.NextDouble());
        date = date.AddDays(1);
    }

    tableDataSource = (table as IListSource).GetList();
    chart.DataBindTable(tableDataSource, "Date");

    timer.Interval = 500;
    timer.Tick += new EventHandler(timer_Tick);
    timer.Start();
}
4

1 に答える 1